如果不存在数据,则显示大小为0的数组,而不是大小为1的数组(array(1){[0] => string(0)“”})||的PHP

时间:2018-09-27 15:17:38

标签: php arrays

我在下面的代码中使用了三种不同的条件:

  1. "$json->clientip":["10.78.58.1", "10.75.22.12"](如果clientip是一个数组)

  2. "$json->clientip":"10.74.10.1, 10.75.10.132, 10.75.10.152",如果clientip是用逗号分隔的字符串

  3. "$json->clientip":"10.74.10.1, ",如果clientip是具有单个值的字符串

所有三种情况都返回一个数组。

但是,当我尝试以下条件时:

"$json->clientip":""

它返回我一个大小为1的数组,但是如果没有数据,我想要一个大小为0的数组。有人可以在逻辑或代码方面帮助我吗,我该怎么做

    switch (true) {
    case is_array($json->clientip):
        // Ips sent as a JSON array case ..
        // ...	                    
        foreach ($json->clientip as $key => $ipValue) {
            $requestObj->clientip[] = (Utils::validatePattern(Utils::REGEXP_SECLOGS_IP, ((trim($ipValue)) ?? FALSE) )) ? trim($ipValue):NULL;
        }
        break;
        
    default:
        
        if (strpos($json->clientip, ',')) {
            // Comma separated IPs case ...
            // ..
            $tmp = explode(',', $json->clientip);
            foreach ($tmp as $key => $ipValue) {
                if (trim($ipValue) != '') $requestObj->clientip[] = (Utils::validatePattern(Utils::REGEXP_SECLOGS_IP, ((trim($ipValue)) ?? FALSE) )) ? trim($ipValue):NULL;
            }
        } else {
            // Single value case ..
            // ...
            $requestObj->clientip[] = trim($json->clientip);
        }	                
    } 
    
    var_dump($requestObj->clientip);die;

0 个答案:

没有答案