Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Isset返回未定义的索引,尽管它已设置_Php_Arrays_Laravel_Isset_Undefined Index - Fatal编程技术网

Php Isset返回未定义的索引,尽管它已设置

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_

我有个奇怪的问题。我调用一个自写函数,该函数返回我的SQL结果

$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
,这会导致错误