为什么返回的计数仍然是3?
$arr =
[
[
'slug' => 'products-services-pricing',
'text' => 'Products/Services and Pricing',
],
[
'slug' => 'promotions-plan',
'text' => 'Promotions Plan',
],
(1 == 2) ?
[
'slug' => 'distribution-plan',
'text' => 'Distribution Plan',
] : null,
];
echo "Count = ".count($arr)."\n";
print_r($arr);
我的foreach
被搞砸了。PHP 8.0
我无法在foreach
中执行条件检查,因为我正在使用count
。
2条答案
按热度按时间uxhixvfz1#
当然,
null
值元素仍被视为有效的数组元素!例如:
在你的代码中,第三个元素的值是
null
,这没有问题,也没有什么问题。你不是在删除这个元素,而是给它赋值:null
.这里你有一个想法:遍历数组并删除值为null的元素:
或者简单地迭代计数非空元素。
或者你也可以在数组中添加或不添加条件元素,这可能是更好的解决方案:
v9tzhpje2#
如果更改三元值返回的值并使用spread运算符,则无需进行任何后续筛选或操作,即可获得所需的结果。
代码:(Demo)
通过向真实分支值添加深度级别,spread运算符将把单行推入数组。
通过将
null
更改为空数组,spread运算符不会将任何内容推入数组。有点,有点,相关:
PHP is there a way to add elements calling a function from inside of array