如何获得多维数组中最小元素的引用?

时间:2015-03-03 18:37:56

标签: php multidimensional-array

例如,有一个数组:

$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;
    }
});

1 个答案:

答案 0 :(得分:2)

我的解决方案假设所有叶元素都与<相当。我还假设min - 引用将存储在源数组中。

array_walk_recursive($data, function (&$item) use (&$data)
{
    if (!isset($data['min']) || $item < $data['min'])
    {
        $data['min'] = &$item;
    }
});