php-foreach通过多维数组在子值上按引用传递
假设我有一个多维数组php-foreach通过多维数组在子值上按引用传递,php,multidimensional-array,foreach,reference,Php,Multidimensional Array,Foreach,Reference,假设我有一个多维数组 $myArray = [ 0 = [ fruit = 'apple', juice = 'orange', cars = [bmw = 'blue', audi = 'red', ford = 'yellow'] ], 1 = [ fruit = 'strawberry', juice = 'grape', cars = [bmw = 'grey', ma
$myArray = [
0 = [
fruit = 'apple',
juice = 'orange',
cars = [bmw = 'blue', audi = 'red', ford = 'yellow']
],
1 = [
fruit = 'strawberry',
juice = 'grape',
cars = [bmw = 'grey', mazda = 'blue', hummer = 'orange']
],
]
还有一些汽车的替换数组值
$replaceCarsArray = [ferrari = 'red', lamborghini = 'blue, masarati = 'pink']
我使用$key=>&$value(通过引用传递的值)遍历数组
这样可以使用$replaceCarsArray替换整个cars值
但是,如果我想针对cars数组中的一个项目并更改颜色,该怎么办?这就是我所尝试的:
foreach ($myArray as $key => &$values) {
foreach ($values as $key2 => &$value) {
if ($key2 == 'cars' && $value['bmw'] != 'red'){
$value['bmw'] = 'red';
}
}
}
然而,这似乎不起作用,宝马的颜色也没有更新为红色。我如何才能更改这些数据
请注意,这是示例数据,我写得非常快,出于所有目的和目的,我确实可以访问所有值,并且我的代码中没有任何可能出现的语法错误。请尝试以下方法
$myArray[$key][$key2]['bmw'] = 'blue';
这对我很有用
<?php
$myArray = [
0 => [
'fruit' => 'apple',
'juice' => 'orange',
'cars' => ['bmw' => 'blue', 'audi' => 'red', 'ford' => 'yellow']
],
1 => [
'fruit' => 'strawberry',
'juice' => 'grape',
'cars' => ['bmw' => 'grey', 'mazda' => 'blue', 'hummer' => 'orange']
]
];
echo "<pre>";
var_dump($myArray);
echo "</pre>";
foreach ($myArray as $key => &$values) {
foreach ($values as $key2 => &$value) {
if ($key2 == 'cars' && $value['bmw'] != 'red'){
$value['bmw'] = 'red';
}
}
}
echo "<pre>";
var_dump($myArray);
echo "</pre>";
echo $myArray[0]['cars']['ford'];
echo $myArray[0]['cars']['bmw'];
可以,但不会通过以下方式更改值reference@user3896569-如果这是有效的,并且给了您相同的结果,那么如果是通过引用还是不引用,又有什么关系呢?实际上,最好不要在foreach
-循环中使用引用,因为它可能导致错误。您的代码可以工作,不要欺骗我们-哈哈,您是对的,我进一步测试了更深层的多维数组,这也行得通。
<?php
$myArray = [
0 => [
'fruit' => 'apple',
'juice' => 'orange',
'cars' => ['bmw' => 'blue', 'audi' => 'red', 'ford' => 'yellow']
],
1 => [
'fruit' => 'strawberry',
'juice' => 'grape',
'cars' => ['bmw' => 'grey', 'mazda' => 'blue', 'hummer' => 'orange']
]
];
echo "<pre>";
var_dump($myArray);
echo "</pre>";
foreach ($myArray as $key => &$values) {
foreach ($values as $key2 => &$value) {
if ($key2 == 'cars' && $value['bmw'] != 'red'){
$value['bmw'] = 'red';
}
}
}
echo "<pre>";
var_dump($myArray);
echo "</pre>";
echo $myArray[0]['cars']['ford'];
echo $myArray[0]['cars']['bmw'];