【问题标题】:Check if a value is empty for a key in a multidimensional array检查多维数组中键的值是否为空
【发布时间】:2018-05-16 04:06:00
【问题描述】:

我需要一个简单而优雅的解决方案来检查一个键在多维数组中是否具有空值。应该返回真/假。

像这样,但是对于多维数组:

if (empty($multi_array["key_inside_multi_array"])) {
  // Do something if the key was empty
}

我发现的所有问题都是在多数组中搜索特定值,而不是简单地检查键是否为空并返回真/假。

这是一个例子:

$my_multi_array = array(    
        0 =>  array(  
            "country"   => "",  
            "price"    =>  4,  
            "discount-price"    =>  0,  
        ),  
);

这将返回 true:

$my_key = "country";

if (check_multi_array_for_empty_value($my_multi_array, $my_key)) {
  //Run this code here because the "country" key in my multi dimensional array is empty 
}

这也将返回 true:

$my_key = "discount-price";

if (check_multi_array_for_empty_value($my_multi_array, $my_key)) {
  //Run this code here because the "discount-price" key in my multi dimensional array is empty
}

这将返回 false:

$my_key = "price";

if (check_multi_array_for_empty_value($my_multi_array, $my_key)) {
  //This WILL NOT RUN because the "price" key in my multi dimensional array is NOT empty
}

当我说空的时候,我的意思是像这样empty()

更新:

我正在尝试修改来自this question 的代码,但到目前为止没有任何运气。这是我到目前为止所拥有的,任何帮助修复将不胜感激:

function bg_empty_value_check($array, $key)
{
    foreach ($array as $item)
    {
        if (is_array($item) && bg_empty_value_check($item, $key)) return true;
        if (empty($item[$key])) return true;
    }
    return false;
}

【问题讨论】:

  • 你要检查多维数组键值吗??
  • @nageennayak 是的。如果键有值返回真,如果没有值返回假。
  • 你必须正确搜索并得到你的答案stackoverflow.com/questions/6990855/…
  • @nageennayak 我看到了,但它正在寻找一个特定的值。如果为空,则不返回 true 或 false。
  • @nageennayak 这看起来最有趣$key = array_search(40489, array_column($userdb, 'uid')); 但同样,它正在寻找一个值。如果为空,则不返回真/假。

标签: php multidimensional-array


【解决方案1】:

你必须调用递归函数,例如我有多维数组

function checkMultiArrayValue($array) {
        global $test;
        foreach ($array as $key => $item) {

            if(!empty($item) && is_array($item)) {
                checkMultiArrayValue($item);
            }else {
                if($item)
                 $test[$item] = false;
                else
                 $test[$item] = true;
            }
        }
        return $test;   
    }

 $multiArray = array(    
                0 =>  array(  
                      "country"   => "",  
                      "price"    => 4,  
                      "discount-price" => 0,  
               ),);

$test = checkMultiArrayValue($multiArray);
echo "<pre>"
print_r($test);

将返回具有真假的数组,有键和索引的将包含真,有索引但没有值的将包含假,您可以在检查条件时使用此数组

【讨论】:

  • 我认为这行不通。该函数只接受一个参数,$array。我需要两个参数,$array 定义要检查的数组,$key 定义我要检查的键不为空。
  • 这也不返回真或假。它需要检查key是否为空,并返回true或false。
  • 请发布您的测试数组和密钥,同时发布您想要的输出。所以我知道你想要什么。
  • 再次更新,有更好的例子。
【解决方案2】:

下面的函数可以帮助你检查嵌套数组中的空值。

function boolCheckEmpty($array = [], $key = null)
{
    if (array_key_exists($key, $array) && !empty($array[$key])) {
        return true;
    }
    if (is_array($array)) {
        foreach ((array)$array as $arrKey => $arrValue) {
            if (is_array($arrValue)) {
                return boolCheckEmpty($arrValue, $key);
            }
            if ($arrKey == $key && !empty($arrValue)) {
                return $arrValue;
            }
        }
    }
    return false;
}

用法:

$my_multi_array = array(    
    0 =>  array(  
        "country"   => "aa",  
        "price"    =>  1,  
        "discount-price"    =>  0,  
    ),  
);
// Call
$checkEmpty = $this->boolCheckEmpty($my_multi_array, 'price');
var_dump($checkEmpty);

注意:如果使用了empty

,如果值为 0,此函数也会返回 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 2013-08-26
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多