Доступ к значению в массиве

#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']

это приведет к:

Пользовательское содержимое боковой панели