【问题标题】:Assigning null to array element is still considered a valid array element将 null 分配给数组元素仍然被认为是有效的数组元素
【发布时间】:2022-11-17 12:48:00
【问题描述】:

为什么这仍然返回 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

【问题讨论】:

  • 第三个元素的值为null,没有问题,没有谜。您没有删除该元素,而是为其分配了一个值:null。在这里您有了一个想法:遍历数组并删除值为 null 的元素。或者简单地迭代以计数不是null 元素。

标签: php


【解决方案1】:

当然,null 值元素仍然被认为是有效的数组元素!

例如:

<?php
$arr = [null, null, null];

echo 'Count: ' . count($arr); //Will print 3

在你的代码中,第三个元素的值为null,这没有问题,没有谜。您没有删除该元素,而是为其分配了一个值:null

在这里你有了一个想法:遍历数组并删除值为 null 的元素:

$aux = [];
foreach ($arr as $item) {
    if (!is_null($item)) {
        $aux[] = $item;
    }
}
$arr = $aux; //Now $arr has no null elements

或者简单地迭代以计算非空元素。

$c = 0;
foreach ($arr as $item) {
    if (!is_null($item)) {
        $c++;
    }
}
echo 'Count: ' . $c; //Count without null elements

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多