例如,有一个数组:
$data = array(
5,
array(
2,
8,
array(
1,
4,
),
3
),
);
如何找到最小元素并保持链接?例如,当这样的操作:$data['min'] = &$data[1][2][0];
即,结果将是:
array {
[0]=> int(5)
[1]=> array {
[0]=> int(2)
[1]=> int(8)
[2]=> array {
[0]=> &int(1)
[1]=> int(4)
}
[3]=> int(3)
}
["min"]=> &int(1)
}
尝试通过array_walk_recursive,但没有发生任何事情:
$min = false;
$minLink = false;
array_walk_recursive($data, function(&$item, $key) use (&$min, &$minLink) {
if ($item < $min OR !$min) {
$minLink = &$item;
$min = $item;
}
});
答案 0 :(得分:2)
我的解决方案假设所有叶元素都与<
相当。我还假设min
- 引用将存储在源数组中。
array_walk_recursive($data, function (&$item) use (&$data)
{
if (!isset($data['min']) || $item < $data['min'])
{
$data['min'] = &$item;
}
});