我必须更新具有4个foreach循环的数组的数据,
foreach ($dta['hotels']['hotels'] as $key => &$value) {
foreach ($value['rooms'] as $key1 => $value1) {
foreach ($value1['rates'] as $key2 => $value2) {
foreach ($value2['shiftRates'] as $key3 => &$value3) {
$value3['net'] = 0.000072*$value3['net'];
$value3['sellingRate'] = 0.000072*$value3['sellingRate'];
var_dump($value3['sellingRate']);
}
}
}
$value['currency'] = 'USD';
}
我想更新非常深的第4个foreach循环的数据,这不是更新数据,因为第一个循环的数据可能会更新。
我尝试放入“&”,但是在第一个循环中它起作用了,在第四个循环中它没有起作用。
任何可能的解决方案吗?
答案 0 :(得分:2)
您拥有所有键,可以使用这些键来修改您的值:
$dta['hotels']['hotels'][$key]['rooms'][$key1]['rates'][$key2]['shiftRates'][$key3]['sellingRate'] = 0.000072 * $value3['sellingRate'];
答案 1 :(得分:0)
只要您不想修改数组中其他位置的其他net
或sellingRate
键,就可以使用array_walk_recursive
来更简单地做到这一点。 / p>
array_walk_recursive($dta, function(&$value, $key) {
if ($key === 'net' || $key === 'sellingRate') {
$value *= 0.000072;
}
});