2016-08-22 118 views
-1

我還有一個陣列內的陣列內 - 這是我的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://stackoverflow.com/q/1503579/3933332 – Rizier123

+0

嗨Rizier - 不幸的是,我已經在該頁面上,並沒有找到一個解決方案,我的數組裏面和數組在PHP 5.3 –

+0

除此之外,5.3已經死了2年它應該工作。你有什麼錯誤嗎? – Rizier123

回答

0

嘗試此(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

嗨艾哈邁德,現在得到這個工作 - 但它刪除一個項目,然後當我去刪除另一個它增加了以前刪除的回 –

-1

試試這個(請注意,這將只刪除第一次出現):

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'的項目,然後取消設置其密鑰,但請注意,原始數組不是一維,原始數組是** **陣列** –

相關問題