我有一个复杂的多维数组,看起来像
[name] => Marko Polo
[description] => New application
[number] => ABCD1234
[loans] => Array
(
[0] => Array
(
[id] => 123
[application_id] => 456
[loan_fees] => Array
(
)
[loan_parts] => Array
(
[0] => Array
(
[id] => 987
[loan_id] => 123
[product_id] => 49788
[product] => Array
(
[id] => 49788
[lender] => MAC
...
我需要创建一种遍历此数组的有效方法,例如,有一组规则来过滤/修改数据。
例如,在数组中有[lender] => MAC
,我希望有类似
loans.loan_parts.product.lender.MAC = 'Macquarie'
这将是一种类型的配置,如果数据数组发生变化,只需将点符号更改为指向lender
值的新位置即可。
使用此功能,我需要过滤lender
并将其修改为Macquarie
而不是Mac
。
我知道现在有一个很大的禁忌是使用太多的foreach循环而且我已经查看了Collections,但由于内部数组没有命名,我不相信收藏是可能的。< / p>
正如我所说,我想避开
的情况foreach
foreach
if (is_array())
foreach
eeewww!
如何以最有效的方式执行此操作,因为阵列可能有大尺寸及其复杂性。
答案 0 :(得分:0)
您可以将array_walk_recursive与回调一起使用,该回调将根据数组的键更改行为。
<?php
//can pass variable by reference to change array in function
function handleMAC(&$item, $key)
{
if($key == 'lender'){
$item['MAC'] = 'your value';
}
}
array_walk_recursive($array, 'handleMAC');
?>