如何引用这个变量(嵌套对象/数组)?

Jas*_*son 2 php drupal

我正在学习 PHP 和 Drupal。我需要引用一个名为 $contexts 的数组中包含的变量。

所以print_r($contexts)给了我这个:

Array ( 
   [context_view_1] => ctools_context Object ( 
       [type] => view 
       [view] => view Object ( 
          [db_table] => views_view 
          [result] => Array ( 
              [0] => stdClass Object ( 
                   [nid] => 28 
                   [node_data_field_display_field_display_value] => slideshow
              ) 
           )
Run Code Online (Sandbox Code Playgroud)

哎哟令人困惑。我想使用 node_data_field_display_field_display_value 变量。我认为我的代码需要像这样,但我知道这是不对的:

if ($contexts['context_view_1']['view']['result'][0]
['node_data_field_display_field_display_value'] == 'slideshow') then do whatever...
Run Code Online (Sandbox Code Playgroud)

谢谢!

Spu*_*ley 5

您建议使用以下数组引用来获取所需的变量:

 $contexts['context_view_1']['view']['result'][0]['node_data_field_display_field_display_value']
Run Code Online (Sandbox Code Playgroud)

这不起作用的原因是因为链中的某些结构实际上是对象而不是数组,因此您需要使用不同的语法来获取它们的属性。

所以第一层是正确的,因为$contexts是一个数组,所以是一个数组元素,所以你可以像你一样context_view_1得到它。$contexts['context_view_1']

但下一个级别是一个对象,因此要访问view,您需要使用语法将其作为对象属性引用->,如下所示:$contexts['context_view_1']->view

对于树下的每一层,您需要确定它是对象还是数组元素,并使用正确的语法。

在这种情况下,您最终会得到如下所示的结果:

$context['context_view_1']->view->result[0]->node_data_field_display_field_display_value
Run Code Online (Sandbox Code Playgroud)