Yea*_*eak 4 php arrays associative-array
我试图将key =>值添加到具有特定值的现有数组.
我基本上循环一个关联数组,我想添加一个key => value foreach数组具有特定的id:
例如:
[0] => Array
(
[id] => 1
[blah] => value2
)
[1] => Array
(
[id] => 1
[blah] => value2
)
Run Code Online (Sandbox Code Playgroud)
我想做到这一点
foreach ($array as $arr) {
while $arr['id']==$some_id {
$array['new_key'] .=$some value
then do a array_push
}
}
Run Code Online (Sandbox Code Playgroud)
所以$ some_value将与特定的id相关联.
Tuc*_*ker 10
while循环没有意义,因为键在关联数组中是唯一的.另外,您确定要在循环播放时修改数组吗?这可能会导致问题.试试这个:
$tmp = new array();
foreach ($array as $arr) {
if($array['id']==$some_id) {
$tmp['new_key'] = $some_value;
}
}
array_merge($array,$tmp);
Run Code Online (Sandbox Code Playgroud)
一个更有效的方法是:
if(in_array($some_id,$array){
$array['new_key'] = $some_value;
}
Run Code Online (Sandbox Code Playgroud)
或者如果它想要匹配数组中的键而不是值...
if(array_key_exists($some_id,$array){
$array['new_key'] = $some_value;
}
Run Code Online (Sandbox Code Playgroud)
当您使用:
foreach($array as $arr){
...
}
Run Code Online (Sandbox Code Playgroud)
... $arr 变量是一个本地副本,其作用域仅限于该 foreach。添加到其中的任何内容都不会影响 $array 变量。但是,如果您通过引用调用 $arr:
foreach($array as &$arr){ // notice the &
...
}
Run Code Online (Sandbox Code Playgroud)
...现在,如果您向该数组添加一个新键,它将影响您正在循环的 $array 。
我希望我正确理解你的问题。