我有一个输入,它是一个数组,数组的键是这样的 lang id
<input type="text" name="name[{{ $lang->id }}]">
这个字段是可选的,所以我不想验证它是否是,我想要的是检查数组的两个元素是否为空做一些事情。假设这是输入 name[]
{
"1": null,
"2": null
}
我做不到
if($request->has('name')) {
//do something
}else {
//do another thing
}
因为 $request
有一个名字,有没有办法做这样的事情
if(array_is_empty($request->has('name'))) {
//do something
}else {
//do another thing
}
最佳答案
$暗示使用数组过滤器,它将从数组中删除任何空的或错误的项目,然后检查是否留下任何内容:
if(empty(array_filter($array)))
如果您想将空格视为空,例如有人只是在字段中放置空格,您可以放入一个带有修剪作为回调的数组映射,如下所示:
if(empty(array_filter(array_map('trim',$array))))
测试一下
$a = [
"1" => null,
"2" => null
];
if(empty(array_filter($a))) echo 'empty';
输出
empty
array_filter — Filters elements of an array using a callback function Iterates over each value in the array passing them to the callback function. If the callback function returns true, the current value from array is returned into the result array. Array keys are preserved.
PHP 会将某些事物视为虚假并删除它们,如果您需要更好的控制,您可以提供自己的回调,但有些事物被视为虚假
0
"0"
""
false
null
[] //this is what you get after filtering $array
可能还有其他的,但这应该可以让您有所了解。
因为数组过滤器返回一个空数组[]
,这也是假的,如果您不想调用空,您甚至可以这样做
if(!array_filter($array))
但它使代码的可读性稍差,因为它依赖于 PHP 的松散类型,当使用 empty
时,意图是非常清晰的。
关于php - 如何知道输入数组元素是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133025/