#php #arrays #multidimensional-array
#php #массивы #многомерный массив
Вопрос:
У меня есть этот массив, который выглядит примерно так:
[field_sidebarhtml] => Array
(
[und] => Array
(
[0] => Array
( [value] => Custom Sidebar Content
[format] => filtered_html
[safe_value] =>
Custom Sidebar Content
)
)
)
==> На самом деле, вот весь массив http://psdesignzone.com/fullarray.txt
Мне нужно получить доступ к ‘safe_value’ в массиве переменных, который называется ‘$ page’, как мне это сделать?
Комментарии:
1. Я думаю, вам, возможно, потребуется добавить еще немного информации о том, зачем вам нужно это значение, и более широкий контекст того, где вы его используете, но попробуйте
$safe_value = $array['field_sidebarhtml']['und'][0]['safe_value']; echo $safe_value;
Ответ №1:
на основе fullarray.txt
$tmp_obj = $page['content']['system_main']['nodes'][7]['body']['#object'];
$val = $tmp_obj->body['field_sidebarhtml']['und'][0]['safe_value'];
Обратите внимание, что ‘#object’ является экземпляром stdClass, а не массивом, из текста вашего вопроса неясно, только в fullarray.txt .
(отредактировано, чтобы найти первый экземпляр safe_value с «Пользовательским содержимым боковой панели») Второй экземпляр возникает в
$tmp_obj = $page['content']['system_main']['nodes'][7]['field_sidebarhtml']['#node];
$val = $tmp_obj->body['field_sidebarhtml']['und'][0]['safe_value'];
Вероятно, их больше.
Комментарии:
1. Это не совсем то, что я искал, safe_value с надписью «Пользовательское содержимое боковой панели» — это то, к чему я пытаюсь получить доступ, оно находится в подэлементе массива под названием field_sidebarhtml. Есть ли где-нибудь средство форматирования, облегчающее управление этим огромным массивом?
2. Хорошая попытка, я попробовал это и заблудился на полпути. Это довольно нелепый массив, кажется, что что-то может быть не так с кодом, который его сгенерировал.
3. @WesleyMurch такого рода структура встречается во фреймворках MVC. Я написал класс tree и набор классов visitor, чтобы справиться с этим на работе.
4. Полагаю, я имел в виду, что вам не нужно получать значение массива таким образом, а не то, что сгенерировавший его код нелеп — моя ошибка. Я надеюсь, что ради вас вы не используете какой-либо код, подобный вашему ответу, ни в одном из ваших проектов 🙂
Ответ №2:
print $bigarray['field_sidebarhtml']['und'][0]['safe_value']
это приведет к:
Пользовательское содержимое боковой панели