我觉得我正在失去理智。
<?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 无论是单引号还是双引号,我都无法使用数字索引或键名来获取值。 (当我尝试没有引号时,页面不会加载。)
答案 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'];