首页 > 解决方案 > 如果不存在数据,则显示大小为 0 的数组,而不是大小为 1 的数组 (array(1) { [0]=> string(0) "" }) || PHP

问题描述

我在下面的代码中有三个不同的条件:

  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 是具有 Single 值的字符串

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

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

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

标签: phparrays

解决方案


推荐阅读