我有一个数组,由于某种原因,该数组会不断消除错误“非法字符串偏移”,我尝试了几种方法来遍历它,但似乎没有任何作用。
$fields = Array (
[cookies] => Array (
[timeout] => 0
[votes_per_cookie] => 1
[enabled] => on
)
[ip] => Array (
[timeout] => 0
[filter] =>
)
[direct] => Array ( )
[membership] => Array (
[type] => Array ( )
[once] => Array ( )
)
[captcha] => Array ( )
[quota] => Array (
[votes] => 1000
)
[date] => Array (
[start] => 1553846400
[end] => 1554767940
[enabled] => on
)
[selection] => Array (
[minimum] => 1
[maximum] => 1
)
[unique_id] => 1547834405
[results] => Array (
[require_vote] => Array (
[enabled] => on
)
)
);
我正在尝试获取end
数组中date
的值。我已经尝试过了:
foreach($fields as $field) {
echo $field['end'];
}
这会输出数据,还会输出非法的偏移误差。
我已经尝试过了:
foreach($fields as $key => $value) {
echo $value['end'];
}
这也会输出相同的响应。
如果我使用上述循环回显key
,它将返回适当的密钥(cookie,ip,direct,membership等)
我也尝试过:
foreach($fields['date'] as $field) {
$field['end'];
}
这只是一个错误。
最后
foreach($fields as $field) {
$field['date']['end'];
}
只是一个错误。
答案 0 :(得分:1)
您无需进行迭代,只需直接访问字段即可:
echo $fields['date']['end'];
答案 1 :(得分:1)
原因: end
是date
索引(它是父数组的索引)的子数组的键,因此还使用date
来获取子键值
解决方案:
echo $fields['date']['end'];
答案 2 :(得分:1)
您不需要循环数组,因为您想要获取特定的键值:
第一种方法:
echo $fields['date']['end'];
第二种方法: 这种方法有点难看。
echo array_column($fields,'end'))[0];
答案 3 :(得分:0)
您的数组应该看起来像这样以便遍历。 我已经在您的索引和 on 值中添加了引号字符串(“”)。否则,您会得到警告:像这样的“使用未定义的常量打开”。希望这会有所帮助!。
$fields = array (
'cookies' => array ('timeout' => 0,'votes_per_cookie' => 1,'enabled' => 'on'),
'ip'=> array ('timeout' => 0,'filter' => '',),
'direct' => array (),
'membership' => array ('type' => array (),'once' => array ()),
'captcha' => array (),
'quota' => array ('votes' => 1000,),
'date' => array ('start' => 1553846400,'end' => 1554767940,'enabled' => 'on',),
'selection' => array ('minimum' => 1,'maximum' => 1,),
'unique_id' => 1547834405,
'results' => array ('require_vote' => array ('enabled' => 'on'))
);
现在,您可以使用 foreach 正确遍历它了:
foreach($fields as $key => $value) {
if($key == 'date'){
print_r($value);
}
}