PHP计数返回1而不是实际的数组长度

时间:2019-01-10 13:50:08

标签: php arrays

我有一个使用array_push创建的数组,其中包含2个元素,count()返回1。 为什么这样做?

代码:

$length = count($usersNoList)
var_dump($usersNoList);
echo "Length:".$length;

输出:

array(2){[0] =>字符串(16)“ Kenyon Velazquez” [1] =>字符串(12)“ Seth Ellison”}长度:1

完整代码:

$usersNoList = array();
while($result = $rawResult -> fetch_assoc()) {
    $user = new Utilisateur($result['IdUtilisateur'], $co);
    // looks for the user in those who have lists
    if($key = array_search($user -> getId(), $usersWithList) == FALSE) {
        // construct the array of names
        array_push($usersNoList, $user -> getPrenom()." ".$user -> getNom());
    } else {
        // remove this value from the array
        var_dump($usersWithList);
        array_splice($usersWithList, $key - 1, $key);
        var_dump($usersWithList);
    }
}
if($length = count($usersNoList) > 0){
        echo "
    <tr>
        <td>
            <p>Ces utilisateurs n'ont pas encore de liste : ";
        var_dump($usersNoList);
        echo "Length:".$length;
        for($i = 0; $i < $length; $i++){
            echo $usersNoList[$i].", ";
        }
        echo $usersNoList[$length - 1].".";
        echo "</p>
            </td>
        </tr>";
        }

2 个答案:

答案 0 :(得分:3)

$length采用布尔值表达式count($usersNoList) > 0的值,这是正确的。这就是为什么它求值为1(真)的原因。

只需在$length语句之前声明并分配if,即可在语句内部和条件中使用它。 E.i:

$length = count($userNoList);

if($length > 0) {

    var_dump($usersNoList);
    echo "Length:".$length; // displays 2
}

答案 1 :(得分:1)

@Jules的答案启发了我去思考添加像这样的括号

if(($length = count($usersNoList)) > 0){
echo $length;

} 也可以。