php - 如果不存在数据,则显示大小为 0 的数组,而不是大小为 1 的数组 (array(1) { [0]=> string(0) "" }) || PHP
问题描述
我在下面的代码中有三个不同的条件:
"$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 是具有 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;
解决方案
推荐阅读
- python - Replace item in dictionary of lists
- elasticsearch - 有没有办法对多个动态字段进行某种“交叉连接”查询?
- python - 如何展平包含字典列表的字典
- android - 没有名为“颜色”的命名参数 [Flutter] [Android Studio]
- javascript - NextJS Link 组件究竟触发了什么以及如何捕获该事件
- acumatica - 如何将 SendQuote 操作添加到移动应用程序
- google-apps-script - Onclick Google 工作表操作
- sql - 基于列值 Oracle 屏蔽数据
- api - Teamcity:是否有任何 REST API 来获取计划的构建?
- python - 如何解决此错误“该进程无法访问该文件,因为它正在被另一个进程使用”?