Задать вопрос
sugarufc
@sugarufc

Как получить доступ к неизвестному элементу многомерного массива?

Имеется многомерный массив (фото).94ed291115d4442b9bd6e9230f494772.jpg Нужно получить значение элемента qty (обозначен красной стрелкой). Вариант array['cart']['3']['size']['L']['qty'] не подходит, т.к. элемент L (обозначен зеленной стрелкой) считаем неизвестным, т.е. нужно пропустить этот элемент и перейти сразу к следующему. Можно ли вообще как-нибудь это сделать? Или есть какие-либо другие пути решения? Подскажите пожалуйста.

P.S. Задача состоит в том, чтоб найти все значения элемента qty и сложить.
  • Вопрос задан
  • 339 просмотров
Подписаться Оценить 1 комментарий
Решения вопроса 1
shaks
@shaks
$qty = array_map(function($a){
    return array_sum(array_column($a['size'], 'qty'));
}, $array['cart']);

print_r($qty);

echo(array_sum($qty));


Т.к. у тебя наверняка в массиве size может содержаться несколько размеров (а раз так то и кол-во под каждый размер разное), то в колбек функции я возвращаю сразу сумму "qty" по каждой из позиции, а потом уже получаю общую сумму

P.S. Функция array_column доступна в пхп >= 5.5.0
Здесь php.net/manual/en/function.array-column.php в комментариях можно найти "самопис" этой функции
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@IceJOKER
Web/Android developer
foreach();
Ответ написан
Комментировать
Defman21
@Defman21
Можно пройтись рекурсивно по массиву и собирать нужные элементы во временный массив. Потом значения этого массива сложить и все.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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