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

时间:2018-05-08 08:24:59

标签: php arrays laravel isset undefined-index

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

$isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray();

我想得到第一个数组的meta_value,因为这是我需要的返回值。出于安全原因,我检查索引和值是否退出:

if(isset($isBusinessAddress[0]["meta_value"])){ ... }

此if语句返回:

  

未定义的索引:meta_value

但是,如果我检查上面只有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"];

亲切的问候,谢谢!

1 个答案:

答案 0 :(得分:3)

问题不在于isset(),而在于之后的行:

$isBusinessAddress = [0]["meta_value"];

尝试从数组meta_value(resp。[0])获取密钥array(0 => 0),其中此密钥不存在。