PHP-警告:中为foreach()提供的参数无效
我正在创建一个字体的动态列表,以便在我的一个页面上的选择菜单中进行选择,并链接到一个文本字段 使用下面的脚本,这可以很好地工作,但是,如果文本字段留空,则“选择”菜单会显示以下错误消息: 警告:中为foreach()提供的参数无效 /opt.php在线 373 在第373行的PHP-警告:中为foreach()提供的参数无效,php,Php,我正在创建一个字体的动态列表,以便在我的一个页面上的选择菜单中进行选择,并链接到一个文本字段 使用下面的脚本,这可以很好地工作,但是,如果文本字段留空,则“选择”菜单会显示以下错误消息: 警告:中为foreach()提供的参数无效 /opt.php在线 373 在第373行的/opt.php文件中: else { foreach ($decode['items'] as $key => $value) { $item_family = $decode['items'
/opt.php
文件中:
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新手,如何修复上述脚本,以便在文本字段留空时不再收到错误消息
谢谢。使用
is\u array()
函数确保foreach
循环的参数是数组
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;
}
}
使用
is\u array()
函数,确保foreach
循环的参数是数组
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;
}
}
与
您只是检查$decode是否为空,而不是检查它是否设置了“items”
if (!isset($decode['items']) && is_array($decode['items'])) {
也许会更好
此外,在foreach循环中,您可以只引用$value,而不是尝试遍历数组。所以
$item_family_trunc = str_replace(' ','+',$value['family']);
与
您只是检查$decode是否为空,而不是检查它是否设置了“items”
if (!isset($decode['items']) && is_array($decode['items'])) {
也许会更好
此外,在foreach循环中,您可以只引用$value,而不是尝试遍历数组。所以
$item_family_trunc = str_replace(' ','+',$value['family']);
您需要确保
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']
可用。您需要确保decode['items']
是一个数组,而不是空的:
$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']
可用。是$decode['items']
数组吗?是否可以转储('decode['items');略高于373?检查数据是否打印($decode);这是相关侧栏中每个问题的副本。请,请在创建问题时查看推荐的相关问题。创建问题时,有两个列表。第一个是在题目和正文之间,第二个是大的、胖的、橙色的,在题目正文的右边。不,这不一样@Charles。谢谢你,$decode['items']
是一个数组吗?你能把($decode['items'])倒出来吗;略高于373?检查数据是否打印($decode);这是相关侧栏中每个问题的副本。请,请在创建问题时查看推荐的相关问题。创建问题时,有两个列表。第一个是在题目和正文之间,第二个是大的、胖的、橙色的,在题目正文的右边。不,这不一样@Charles。谢谢您,不过…isset()&&is_array()
将检查变量是否存在,如果存在,则将检查它是否为数组是数组()
只会检查$decode['items']
是否是数组。这实际上只是一个回退。isset()&&is\u array()
将检查变量是否存在,如果存在,则检查它是否是数组是数组()
只会检查$decode['items']
是否是数组。这只是一个退路,真的。