检查多维数组中的键的值是否为空

时间:2018-05-16 04:06:01

标签: php multidimensional-array

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

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

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

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

以下是一个例子:

$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;
}

2 个答案:

答案 0 :(得分:0)

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

Session firewallSession = jsch.getSession("firewall_username", "firewall", 22);
// ...
firewallSession.connect();

int forwardedPort = 2222; // any port number which is not in use on the local machine
firewallSession.setPortForwardingL(forwardedPort, "server", 22);

Session session = jsch.getSession("server_usernam", "localhost", forwardedPort);
// ...
session.connect();

Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp channelSftp = (ChannelSftp)channel;           

channelSftp.get("/remote/path/on/server/file.txt", "C:\\local\\path\\file.txt");

将返回带有true和false的数组,其中key和index将包含true且谁有索引但不包含false,您可以使用此数组来检查条件

答案 1 :(得分:0)

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

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);

注意:如果值为0,则此函数也会返回false,因为使用了empty