在Python中,我可以使用" get"从字典中获取值而没有错误的方法。
a = {1: "a", 2: "b"}
a[3] # error
a.get(3, "") # I got empty string.
所以我搜索一个执行此操作的公共/基本函数:
function GetItem($Arr, $Key, $Default){
$res = '';
if (array_key_exists($Key, $Arr)) {
$res = $Arr[$Key];
} else {
$res = $Default;
}
return $res;
}
在PHP中基本具有与Python相同的功能吗?
感谢: DD
答案 0 :(得分:10)
isset()
通常比array_key_exists()
更快。如果省略,参数$default
将初始化为空字符串。
function getItem($array, $key, $default = "") {
return isset($array[$key]) ? $array[$key] : $default;
}
// Call as
$array = array("abc" => 123, "def" => 455);
echo getItem($array, "xyz", "not here");
// "not here"
但是,如果数组键存在但具有NULL值,isset()
将不会按预期方式运行,因为它会将NULL
视为不存在并返回{ {1}}。如果您希望数组中有$default
,则必须使用NULL
。
array_key_exists()
答案 1 :(得分:2)
不完全。这应该是相同的。
function GetItem($Arr, $Key, $Default = ''){
if (array_key_exists($Key, $Arr)) {
$res = $Arr[$Key];
} else {
$res = $Default;
}
return $res;
}
您的函数中的第一行是无用的,因为每个代码路径都会导致$res
被覆盖。诀窍是如上所述使$Default
参数可选。
请记住,使用array_key_exists()
会导致显着减速,尤其是在大型阵列上。另一种选择:
function GetItem($Arr, $Key, $Default = '') {
return isset($Arr[$Key]) ? $Arr[$Key] : $Default;
}
答案 2 :(得分:0)
在我的脑海里没有基本功能。
你的GetItem是做你想做的事情的好方法:)
答案 3 :(得分:0)
是。或
function GetItem($Arr, $Key, $Default) {
return array_key_exists($Key, $Arr)
? $Arr[$Key]
: $Default;
}
答案 4 :(得分:0)
php7已经退出了很长时间,所以您可以这样做
$Arr[$Key] ?? $default