2014-07-11 80 views
1

我有相同的子陣列的大陣,一個小例子可能看起來像:刪除子數組,如果條件(兩個鍵和值)滿足

array(4) { 
    [0]=> 
    array(2) { 
    ["id_product"]=> 
    string(4) "1372" 
    ["quantity"]=> 
    int(0) 
    } 
    [1]=> 
    array(2) { 
    ["id_product"]=> 
    string(4) "1373" 
    ["quantity"]=> 
    int(1) 
    } 
    [2]=> 
    array(2) { 
    ["id_product"]=> 
    string(4) "1374" 
    ["quantity"]=> 
    int(2) 
    } 
    [3]=> 
    array(2) { 
    ["id_product"]=> 
    string(4) "1375" 
    ["quantity"]=> 
    int(0) 
    } 
} 

我的目標是創建一個新的數組,不包括子陣列,quantity等於int(0),什麼可能看到這樣的信息:

array(4) { 
    [1]=> 
    array(2) { 
    ["id_product"]=> 
    string(4) "1373" 
    ["quantity"]=> 
    int(1) 
    } 
    [2]=> 
    array(2) { 
    ["id_product"]=> 
    string(4) "1374" 
    ["quantity"]=> 
    int(2) 
    } 
} 

我使用array_search()unset()嘗試,但都無濟於事。有關如何使用這些函數的任何建議,以便我可以排除具有如下條件的任何子數組:sub-key = x和value = y。

非常感謝您的幫助。

回答

1

知府情況下使用array_filter()

$newArray = array_filter(
    $originalArray, 
    function($value) { 
     return $value['quantity'] > 0; 
    } 
); 
+1

請downvoter告訴我們爲什麼? –

+0

這個問題需要根據條件過濾出數組中的元素,並創建一個新過濾的數組。使用array_filter()的最佳案例 – Alex

+0

這對我來說非常合適,它解決了像魅力這樣的問題。我認爲應該把一些upvotes放在這裏而不是downvoting,因爲使用'unset'和'array_search'是浪費時間(對我來說)。 –

1

試試你的自定義代碼

function array_filter(){ 
    $newArray = array(); 
    foreach($array as $key => $value){ 
     if($value["quantity"] > 0) 
      $newArray[] = $value 
    } 
    return $newArray; 
} 

享受:)

+0

謝謝你,先生+1。 –

+0

歡迎你:) – Anri