簡體   English   中英

將key => value對添加到具有條件的現有數組

[英]Adding key=>value pair to existing array with condition

我試圖將key =>值添加到具有特定值的現有數組。

我基本上循環一個關聯數組,我想添加一個key => value foreach數組具有特定的id:

例如:

[0] => Array
    (
        [id] => 1
        [blah] => value2

    )

[1] => Array
    (
        [id] => 1
        [blah] => value2
    )

我想做到這一點

foreach ($array as $arr) {

     while $arr['id']==$some_id {

            $array['new_key'] .=$some value
            then do a array_push
      }    
}

所以$ some_value將與特定的id相關聯。

while循環沒有意義,因為鍵在關聯數組中是唯一的。 另外,您確定要在循環播放時修改數組嗎? 這可能會導致問題。 嘗試這個:

$tmp = new array();
foreach ($array as $arr) {

     if($array['id']==$some_id) {
            $tmp['new_key'] = $some_value;
      }    
}


array_merge($array,$tmp);

一個更有效的方法是:

if(in_array($some_id,$array){
  $array['new_key'] = $some_value;
}

或者如果它想要匹配數組中的鍵而不是值...

if(array_key_exists($some_id,$array){
      $array['new_key'] = $some_value;
    }

當你使用:

foreach($array as $arr){
    ...
}

... $ arr變量是一個本地副本,僅限於該foreach。 添加到它的任何內容都不會影響$ array變量。 但是,如果您通過引用調用$ arr:

foreach($array as &$arr){ // notice the &
    ...
}

...現在,如果向該數組添加新密鑰,它將影響您循環的$數組。

我希望我能正確理解你的問題。

如果我理解正確,這將是解決方案:

foreach ($array as $arr) {
  if ($arr['id'] == $some_id) {
     $arr[] = $some value;
     // or: $arr['key'] but when 'key' already exists it will be overwritten
  }
}

暫無
暫無

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

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