Php Isset返回未定义的索引,尽管它已设置
我有个奇怪的问题。我调用一个自写函数,该函数返回我的SQL结果Php Isset返回未定义的索引,尽管它已设置,php,arrays,laravel,isset,undefined-index,Php,Arrays,Laravel,Isset,Undefined Index,我有个奇怪的问题。我调用一个自写函数,该函数返回我的SQL结果 $isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray(); 我想得到第一个数组的meta_值,因为这是我需要的返回值。出于安全原因,我检查索引和值是否存在: if(isset($isBusinessAddress[0]["meta_value"])){ ... } 此if语句返回: 未定义索引:meta_
$isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray();
我想得到第一个数组的meta_值,因为这是我需要的返回值。出于安全原因,我检查索引和值是否存在:
if(isset($isBusinessAddress[0]["meta_value"])){ ... }
此if语句返回:
未定义索引:meta_值
但是,如果我检查该值,只需在其上方2-3行即可
var_dump($isBusinessAddress);
var_dump(isset($isBusinessAddress[0]["meta_value"]));
var_dump(array_key_exists("meta_value", $isBusinessAddress[0]));
var_dump($isBusinessAddress[0]["meta_value"]);
输出:
array(1) {
[0]=>
array(2) {
["user_id"]=>
int(12)
["meta_value"]=>
string(4) "Nein"
}
}
bool(true)
bool(true)
string(4) "Nein"
这是我的代码:
$isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray();
var_dump($isBusinessAddress);
var_dump(isset($isBusinessAddress[0]["meta_value"]));
var_dump(array_key_exists("meta_value", $isBusinessAddress[0]));
var_dump($isBusinessAddress[0]["meta_value"]);
//die();
if(isset($isBusinessAddress[0]["meta_value"])){
$isBusinessAddress = [0]["meta_value"];
}else{
$isBusinessAddress = "NotSet";
}
你们能告诉我我做错了什么吗?我已经多次使用这个if语句
更新:
索引肯定存在,因为我传递了if语句。我刚刚在试图将值分配给变量的行上收到消息“Undefined index:meta_value”!以下行:
$isBusinessAddress = [0]["meta_value"];
亲切的问候和感谢 问题不在于isset(),而在于后面的行:
$isBusinessAddress = [0]["meta_value"];
它试图从数组
[0]
(resp.数组(0=>0)
)中获取键meta\u值,而该键不存在。问题不在于isset(),而在于后面的行:
$isBusinessAddress = [0]["meta_value"];
它试图从数组[0]
(resp.array(0=>0)
)中获取键meta\u值
,其中该键不存在。即将出现一组数据,可能是您在记录集中检查的某些值没有索引?有。检查输出。。。我只在上面4行转储数组,isset()方法工作得很好。。。但是为什么不在if语句中呢?您可能不在您认为您所在的数组中。我建议在if块中进行var_转储,只是为了确保。您对如何正确处理sql结果/验证有一个有趣的想法。也许这是一个更好的起点。即将出现一组数据,可能记录集中的某些值没有索引?有。检查输出。。。我只在上面4行转储数组,isset()方法工作得很好。。。但是为什么不在if语句中呢?您可能不在您认为您所在的数组中。我建议在if块中进行var_转储,只是为了确保。您对如何正确处理sql结果/验证有一个有趣的想法。也许攻击它会是一个更好的起点。如果它不退出,我就不会通过isset()方法@简,请仔细阅读课文!如前所述,发生错误是因为(无意中)使用了与您想象中不同的数组。我也说过,问题不在于isset()
。明白了。。。我自己刚发现错误。。“$isBusinessAddress=$isBusinessAddress[0][“meta_value”];”谢谢!问题是,您刚刚使用了[0]['meta_value']
,您遗漏了变量部分,因此这里您实际上是在尝试访问数组的meta_value
部分,该部分包含单个值0
,这会导致错误,如果它不存在,我将不会传递isset()方法@简,请仔细阅读课文!如前所述,发生错误是因为(无意中)使用了与您想象中不同的数组。我也说过,问题不在于isset()
。明白了。。。我自己刚发现错误。。“$isBusinessAddress=$isBusinessAddress[0][“meta_value”];”谢谢!问题是,您刚刚使用了[0]['meta_value']
,您遗漏了变量部分,因此这里您实际上是在尝试访问数组的meta_value
部分,该数组包含单个值0
,这会导致错误