php - Isset 返回未定义的索引,尽管它已设置
问题描述
我有一个奇怪的问题。我调用了一个返回我的 SQL 结果的自写函数。
$isBusinessAddress = PartnernetShop::invoiceAddressIsBusinessAddress($userID)->toArray();
我想获取第一个数组的元值,因为这是我需要的返回值。出于安全原因,我检查索引和值是否存在:
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 语句。我只是在尝试将值分配给变量的行上收到消息“未定义的索引:meta_value”!以下行:
$isBusinessAddress = [0]["meta_value"];
亲切的问候,谢谢!
解决方案
问题不在于 isset(),而是之后的行:
$isBusinessAddress = [0]["meta_value"];
它试图从不存在该密钥meta_value
的数组[0]
(resp. )中获取密钥。array(0 => 0)
推荐阅读
- list - Ansible,将列表分发到其他列表
- laravel - 如何在刀片中使用带有参数的翻译字符串?(Laravel 5.8)
- c - 我收到一个错误“警告:从 'char *' 分配给 'char' 使指针从没有强制转换的整数”
- terraform - 如何在 terraform 模块中检索我的安全组 ID
- javascript - 事件监听器“记得”之前获取的数据?
- r - 如何使来自`map_dfc()`的“新名称”消息静音?
- c++ - 如何在c ++中将lua函数从一个lua_State复制到另一个lua_State
- mongodb - MongoDB 日期比较不适用于 $date
- c# - 在 Xamarin Forms 中重新启动活动时保持 Switch 值
- python - 如何使用 mplfinance 在绘图的其他线条上方显示蜡烛?