[英]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.