PHP数组\u键\u存在且不为空
继上一个问题之后,我现在使用以下函数检查多维数组中是否存在键PHP数组\u键\u存在且不为空,php,array-key-exists,Php,Array Key Exists,继上一个问题之后,我现在使用以下函数检查多维数组中是否存在键 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
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) {
$found = [];
array_walk_recursive($haystack, function ($key, $value) use (&$found) {
# Collect your data here in $found
});
return $found;
}
是否在函数内部执行此操作完全取决于您。就我个人而言,如果我在函数中使用它,我会将其名称更改为更清晰的名称,因为它不仅检查是否存在密钥。总之,我在同一个函数中找到了一个解决方案:
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以防万一。我认为它仍然可以增强,但这确实起到了作用。我不确定我是否理解您的意思,但是
如果($needle==“”)返回false代码>手册中陈述了关于ARARYAXWALKYRADION:“您可能注意到键‘甜点’从来没有显示过。任何持有数组的密钥都不会传递给函数。”在这种情况下,您应该考虑使用递归迭代器。试试这个