我有一个看起来像这样的数组
$array =
Array
(
[0] => Array
(
[Product] => Amazing Widget
[Value] => 200
)
[1] => Array
(
[Product] => Super Amazing Widget
[Value] => 400
)
[2] => Array
(
[Product] => Promising Widget
[Value] => 300
)
[3] => Array
(
[Product] => Superb Widget
[Value] => 400
)
}
Run Code Online (Sandbox Code Playgroud)
我想更新数组以将"Promising Widget"更改为800而不是300.
请注意,此数组的顺序是任意的,这意味着我需要根据"Product"名称值更新Value Based(而不是数组中的数字).
我试图通过数组中的数字访问它,但意识到这不会起作用,我不知道如何根据另一个更改多维数组的一个元素的值.
谢谢你的帮助.
Roc*_*mat 21
foreach($array as &$value){
if($value['Product'] === 'Promising Widget'){
$value['Value'] = 800;
break; // Stop the loop after we've found the item
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您遍历数组,找到所需的值,然后更改它.的&$value是这样的阵列通过引用传递.这意味着我们可以直接从循环中编辑数组中的值,而不必这样做$array[$key]['Value'].
我认为你必须循环使用它们,例如:
foreach ($array as $k => $v) {
if ($v['Product']=='Promising Widget') {
$array[$k]['Value']=800;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为最通用的方法是像这样使用array_walk_recursive函数:
array_walk_recursive($array, 'updateValue');
function updateValue(&$data, $key) {
if($key == 'Promising Widget') {
$data = 800;
}
}
Run Code Online (Sandbox Code Playgroud)
这样,即使稍后要在此函数上更改数组,仍然可以正常工作。