2
Например есть массив:Как получить ссылку на минимальный элемент в многомерном массиве?
$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;
}
});
Значит, вы предполагаете, что это было неправильное условие, а не поведение ссылки? –
@TomFenech: Состояние выглядит нормально, но, похоже, невозможно правильно установить '$ minLink'. В начале каждого вызова '$ minLink' имеет значение' false'. После его установки на самом деле содержится ссылка (вы можете изменить значения '$ data' через' $ minLink'), но эта информация теряется между двумя последующими вызовами. У меня нет объяснений по этому поведению, это может быть связано с проблемами обзора? Как ни странно, моя версия работает правильно, но, как я вижу сейчас, это просто случайно ... – xmoex