![](/img/trans.png)
[英]php array_key_exists, !empty and isset fails for no reason?
[英]PHP array_key_exists and is not empty
在上一个问题之后,我现在使用以下函数来检查多维数组中是否存在键...
function array_key_exists_r($needle, $haystack) {
$result = array_key_exists($needle, $haystack);
if ($result)
return $result;
foreach ($haystack as $v) {
if (is_array($v) || is_object($v))
$result = array_key_exists_r($needle, $v);
if ($result)
return $result;
}
return $result;
}
我正在这样检查...
if (array_key_exists_r("image",$myarray)) {
echo 'Array Key Image Exists';
}
但是现在我正在尝试修改它或结果以检查键是否为空,我可以在函数内部执行此操作还是应该对函数的输出执行某些操作?
还是应该改用isset?
是否在函数内部执行此操作完全取决于您。 就我个人而言,如果我在函数内执行此操作,我会将其名称更改为更清晰的名称,因为它不仅检查键是否存在。 无论如何,我在同一函数中找到了一个解决方案:
function array_key_exists_r($needle, $haystack){
$result = array_key_exists($needle, $haystack);
if ($result && $haystack[$needle]){
return $result;
}
foreach ($haystack as $v)
{
if (is_array($v) || is_object($v)){
$result = array_key_exists_r($needle, $v);
if ($result) {
return $result;
}
}
}
return false;
}
因此,基本上,我在您的ifs上添加了一个验证,并且这样做也将默认返回值更改为false以防万一。 我认为它仍然可以增强,但是可以做到。
请尝试这种方法。 更轻松!
function array_key_exists_r($needle, $haystack) {
$found = [];
array_walk_recursive($haystack, function ($key, $value) use (&$found) {
# Collect your data here in $found
});
return $found;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.