PHP - 警告:为foreach()提供的无效参数
问题描述:
我正在创建一个动态列表,可以在我的一个页面上的选择菜单中选择字体,链接到文本字段。PHP - 警告:为foreach()提供的无效参数
使用下面的脚本,这个工作完全正常,但是,如果文本字段为空,选择菜单显示我此错误消息:
警告:无效的参数提供了的foreach ()中的线
在上线/opt.php
文件 /opt.php 373:
else {
foreach ($decode['items'] as $key => $value) {
$item_family = $decode['items'][$key]['family'];
$item_family_trunc = str_replace(' ','+',$item_family);
$default[$item_family_trunc] = $item_family;
}
}
由于我是新来的PHP,我将如何能够解决上面的脚本,这样当文本字段为空,我不再收到错误消息?
谢谢。
答
确保了foreach
循环参数是通过使用is_array()
功能
if (isset($decode['items']) && is_array($decode['items'])) {
foreach ($decode['items'] as $key => $value) {
$item_family = $decode['items'][$key]['family'];
$item_family_trunc = str_replace(' ','+',$item_family);
$default[$item_family_trunc] = $item_family;
}
}
答
的阵列
if(empty($decode)) {
你只检查$解码是否为空,而不是是否它有'项目'设置。
if (!isset($decode['items']) && is_array($decode['items'])) {
可能会更好。
也在您的foreach循环中,您可以引用$值而不是尝试遍历数组。所以..
$item_family_trunc = str_replace(' ','+',$value['family']);
+1
'isset()&& is_array()'将检查变量是否存在,如果是,则检查它是否是数组。 'is_array()'只会检查'$ decode ['items']'是否是一个数组。这真的只是一个回退。 – qooplmao
答
您需要确保decode['items']
isset,是一个数组,而不是空:
$decode = json_decode($json, true);
if(empty($decode)) {
}elseif(isset($decode['items']) && !empty($decode['items']) && is_array($decode['items'])){
foreach ($decode['items'] as $key => $value) {
$item_family = $decode['items'][$key]['family'];
$item_family_trunc = str_replace(' ','+',$item_family);
$default[$item_family_trunc] = $item_family;
}
}
}
与您的代码的问题是,有可能是$decode
不为空(错误信息等),因此您需要确保$decode['items']
可用。
373哪里? –
'$ decode ['items']'是一个数组吗? – Sean
can var_dump($ decode ['items']);刚刚超过373? – user1190992