我在下面的代码中使用了三种不同的条件:
"$json->clientip":["10.78.58.1", "10.75.22.12"]
(如果clientip是一个数组)
"$json->clientip":"10.74.10.1, 10.75.10.132, 10.75.10.152"
,如果clientip是用逗号分隔的字符串
"$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;