@AlexLichi

Можно ли использовать array_column() для трехмерного массива PHP?

для такого?
$array = array(
"a1" => array(
"b1" => array(
"d" => 1,
"f" => 2,
),
"b2" => array(
"d" => 3,
"f" => 4,
),
"a2" => array(
"b1" => array(
"d" => 5,
"f" => 6,
),
"b1" => array(
"d" => 7,
"f" => 8,
),
),
);

Пока только для такого двумерного получается:
$array = array(
"a1" => array(
"b1" => 1,
"b2" => 2,
),
"a2" => array(
"b1" => 3,
"b2" => 4,
),
);
$array_column = array_column($array, 'b1');
print_r ($array_column);

Или нельзя? Тогда мне лучше сделать просто несколько массивов?
Просто мне нужно произвести вычисления с кучей чисел в ключе "d"
  • Вопрос задан
  • 598 просмотров
Решения вопроса 1
@artem78
Так?
<?php
function arrayColumnRecursive($array, $column) {
	$values = [];
	foreach ($array as $k => $v) {
		if ($k == $column) {;
			$values[] = $v;
		} elseif (is_array($v)) {
			$values = array_merge($values, arrayColumnRecursive($v, $column));
		}
	}
	return $values;
}

print_r(arrayColumnRecursive($array, 'd'));

Результат:
Array
(
    [0] => 1
    [1] => 3
    [2] => 5
    [3] => 7
)

Это будет работать для произвольного уровня вложенности.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы