簡體   English   中英

通過值從php中的多維數組中刪除項目

[英]Removing an item from a multidimensional array in php by value

我有一個多維數組$array ,看起來像這樣:

array (size=3)
  0 => 
    array (size=1)
      0 => 
        object(stdClass)[500]
          public 'id' => int 2
          public 'first_name' => string 'Mary' (length=4)
          public 'last_name' => string 'Sweet' (length=5)
  1 => 
    array (size=1)
      0 => 
        object(stdClass)[501]
          public 'id' => int 9
          public 'first_name' => string 'Joe' (length=3)
          public 'last_name' => string 'Bob' (length=3)
  2 => 
    array (size=1)
      0 => 
        object(stdClass)[502]
          public 'id' => int 1
          public 'first_name' => string 'Shag' (length=4)
          public 'last_name' => string 'Well' (length=4)

我希望能夠通過搜索值(而不是索引)來刪除數組中的一項。

因此,我想刪除具有first_name屬性為'Joe'的數組中的項目。

因此,如果我刪除它,該數組將如下所示:

array (size=2)
  0 => 
    array (size=1)
      0 => 
        object(stdClass)[500]
          public 'id' => int 2
          public 'first_name' => string 'Mary' (length=4)
          public 'last_name' => string 'Sweet' (length=5)
  1 => 
    array (size=1)
      0 => 
        object(stdClass)[502]
          public 'id' => int 1
          public 'first_name' => string 'Shag' (length=4)
          public 'last_name' => string 'Well' (length=4)

我將如何做到這一點? 謝謝。

是的,在這種情況下,您可以只使用foreach。 它將正常工作。 只需使用搜索字符串needle並在循環內添加一個if即可比較對象屬性firstname和needle:

$first_name_search = 'Joe';
foreach ($array as $key => $value) {
    $value = reset($value); // get that index 0 which is nested 
    if($value->first_name == $first_name_search) {
        unset($array[$key]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM