删除一个项目从数组另一个数组

问题描述:

我还有一个阵列内的阵列内 - 这是我的print_r:删除一个项目从数组另一个数组

Array 
(
    [0] => Array 
     (
      [ProductID] => 180 
      [ProductName] => Male Thread BSPT Coupling 
      [ProductImage] => 054-male-thread-bspt-coupling.jpg 
      [Termination] => 1/4\" 
      [Length] => 58 
      [Diameter] => 23 
      [Part] => 054CVMT14SNN 
      [Price] => 3.26 
      [quantity] => 22 
     ) 

    [1] => Array 
     (
      [ProductID] => 183 
      [ProductName] => Male Thread BSPT Plug 
      [ProductImage] => 054-male-thread-bspt-plug.jpg 
      [Termination] => 1/4\" 
      [Length] => 38 
      [Diameter] => 
      [Part] => 054PNMT14SXN 
      [Price] => 0.67 
      [quantity] => 22 
     ) 

) 

我需要从阵列中删除,其中部分= X

+3

请参阅:http://*.com/q/1503579/3933332 – Rizier123

+0

嗨Rizier - 不幸的是,我已经在该页面上,并没有找到一个解决方案,我的数组里面和数组在PHP 5.3 –

+0

除此之外,5.3已经死了2年它应该工作。你有什么错误吗? – Rizier123

尝试此(demo):

$arr = array(
     'a' => array('h' => 10, 'w' => 40, 'd' => 100, 'part' => 'A10'), 
     'b' => array('h' => 20, 'w' => 30, 'd' => 400, 'part' => 'A20'), 
     'c' => array('h' => 30, 'w' => 20, 'd' => 900, 'part' => 'A30'), 
     'd' => array('h' => 40, 'w' => 10, 'd' => 1600, 'part' => 'A40'), 
    ); 
    $part = 'A10'; 
    $res = array_filter($arr, function ($elem) use ($part) { 
     return $elem['part'] != $part; 
    }); 

    print_r($res); 

$res将输入数组排除其part元素设置为的任何项目。

+0

嗨艾哈迈德 - 谢谢这非常重要。不幸的是,该网站是在一个使用PHP 5.3的网络服务器上,其中一些不适用于该版本。 –

+0

怎么回事?自PHP 4> = 4.0.6以来,array_filter可用。顺便说一句关闭是可用的以及自5.3 :) –

+0

嗨艾哈迈德,现在得到这个工作 - 但它删除一个项目,然后当我去删除另一个它增加了以前删除的回 –

试试这个(请注意,这将只删除第一次出现):

if(($key = array_search($delPartWithThisId, $partsArray)) !== false) { 
    unset($partsArray[$key]); 
} 

或者:

foreach (array_keys($partsArray, $delPartWithThisId, true) as $key) { unset($partsArray[$key]); }

在第二溶液可变$delPartWithThisId可以像[1,2,3]

阵列另外我建议使用array_values()重组数组索引

+0

这将搜索原始数组,对于任何值为'$ delPartWithThisId'的项目,然后取消设置其密钥,但请注意,原始数组不是一维,原始数组是** **阵列** –