PHP - 关联数组

时间:2015-11-07 12:00:15

标签: php arrays wordpress

我觉得我正在失去理智。

<?php
print_r($roc_option);
?>

打印出来:

  

数组(['class'] =&gt; classnew1 ['id'] =&gt; idnew1)

然后,在下一行,

<?php
echo $roc_option['class'];
?>

打印出NOTHING。

任何想法发生了什么?

上下文: 这发生在foreach循环中。 循环外的类似结构echo $roc_options[0]['class'];同样没有提供任何内容。

修改

完整的上下文(为了让我保持理智,添加了大量的调试工具)

代码

echo "ln1 -- <br>";
   print_r(array_values( $roc_options ));

   echo "<br><br>ln2 -- <br>";
   print_r(array_values( $roc_options[0] ));

   echo "<br><br>ln3a -- <br>";
   echo $roc_options[0]['class']; 

   echo "<br><br>ln3b -- <br>";
   echo $roc_options[0][0]; 


   foreach ( $roc_options as $roc_option ){ 
    echo "<br>inside foreach <br>";

    echo "<br><br>ln4 -- <br>";
    print_r($roc_option);

    echo "<br><br>ln5 -- <br>";
    echo $roc_option[0];

输出

  

ln1 - 数组([0] =&gt;数组(['class'] =&gt; classnew1 ['id'] =&gt; idnew1   ))

     

ln2 - 数组([0] =&gt; classnew1 [1] =&gt; idnew1)

     

ln3a -

     

ln3b -

     

在foreach内部

     

ln4 - 数组(['class'] =&gt; classnew1 ['id'] =&gt; idnew1)

     

ln5 -

我无法理解为什么3a,3b和5都是空的。

它继续开启

我切换到var_dumps并强制使用一些新名称,只是为了确保表单正确保存...

CODE:

   var_dump($roc_options);
   echo "ln1 -- <br>";
   print_r(array_values( $roc_options ));

   echo "<br><br>ln2 -- <br>";
   print_r(array_values( $roc_options[0] ));

   echo "<br><br>ln3a -- <br>";
   var_dump( $roc_options[0]['class'] ); 

   echo "<br><br>ln3b -- <br>";
   var_dump( $roc_options[0][0]); 


   foreach ( $roc_options as $roc_option ){ 
    echo "<br>inside foreach <br>";

    echo "<br><br>ln4 -- <br>";
    print_r($roc_option);

    echo "<br><br>ln5 -- <br>";
    var_dump( $roc_option[0] );

    echo "<br><br>ln6 -- <br>";
    var_dump( $roc_option['class'] );

    echo "<br><br>ln7 -- <br>";
    var_dump( $roc_option["id"] );

输出

  

array(1){[0] =&gt; array(2){[“'class'”] =&gt; string(9)“new class”[“'id'”] =&gt; string(6)“new id”}}   ln1 - 数组([0] =&gt;数组(['class'] =&gt;新类['id'] =&gt;新id   ))

     

ln2 - 数组([0] =&gt;新类[1] =&gt;新ID)

     

ln3a - NULL

     

ln3b - foreach中的NULL

     

ln4 - 数组(['class'] =&gt;新课程['id'] =&gt;新ID)

     

ln5 - NULL

     

ln6 - NULL

     

ln6 - NULL

通知ln4 --- $ roc_option是一个包含两个项目的数组。 然后看5-7 无论是单引号还是双引号,我都无法使用数字索引或键名来获取值。 (当我尝试没有引号时,页面不会加载。)

1 个答案:

答案 0 :(得分:1)

编辑:
查看$array['class']$array["'class'"]

之间的差异
foreach ( $options as $optionArray ){ 
    var_dump($optionArray['class']); // notice undefined index
    var_dump($optionArray["'class'"]); // string(9) "classnew1"
}

您需要区分array_values的输出和print_r的输出。

假设以下结构,根据您的输出,请参阅以下逻辑:

$options = array(
    array(
        'class' => 'classnew1',
        'id'    => 'idnew1'
    )
);

print_r($options);

print_r(array_values($options));

print_r(array_values( $options[0] ));

foreach ( $options[0] as $option ){ 
    print $option . PHP_EOL;
}

会打印出你的内在价值。

如果你想扩展循环而不依赖第一个索引,试试这个

foreach ( $options as $optionArray ){ 
    print $optionArray['class'] . '-' . $optionArray['id']. PHP_EOL;
}

或者,如果您想打印单个值,可以执行此操作

print $options[0]['id'];