#php #arrays #multidimensional-array
#php #массивы #многомерный-массив
Вопрос:
Я хотел бы сохранить значения из следующего массива $cart_item:
[addons] => Array(
[0] => Array(
[name] => First Name - First Name
[value] => Gary
[price] =>
)
[1] => Array(
[name] => Church Information - Name
[value] => Victory Bible Church
[price] =>
)
[2] => Array(
[name] => Shirt Size
[value] => XL
[price] =>
)
)
Я понял, что я не могу получить значение на основе индекса, потому что этот массив иногда будет иметь больше вложенных массивов. Например, я не могу использовать следующую строку для хранения данных:
$shirt_size = $cart_item['addons'][2]['value'];
Потому что кто-то может добавить в массив имя «Информация о церкви — Город», и это примет индекс массива [2], который затем заставит переменную $ shirt_size принимать значение «Информация о церкви — город». Я не хочу, чтобы это произошло.
Есть только 2 других возможных массива, которые будут включены. Я хочу сохранить все возможные значения, связанные с именем.
Может ли кто-нибудь помочь мне с этим?
Комментарии:
1. Где находится код, который генерирует указанный выше массив?
2. @Mooseman этот массив получен из плагина WooCommerce.
Ответ №1:
Если вам нужно каждое из значений в переменных, вы можете использовать значение ключа ‘name’ для хранения значения ключа ‘value’.
foreach ($cart_item['addons'] as $key => $val) {
$name = strtolower(str_replace(' ','_', $val['name']));
$name = $val['value'];
}
echo $shirt_size; //output as XL
или
если вам нужен только размер рубашки, вы можете применить условие и получить свое значение.
foreach ($cart_item['addons'] as $key => $val) {
if ($val['name'] == 'Shirt Size') {
$shirt_size = $val['value'];
}
}
echo $shirt_size; //output as XL
Надеюсь, это поможет вам получить требуемые значения.
Комментарии:
1. Еще раз спасибо @v2solutions, ответ кажется таким простым после того, как я его увижу.