我有一个使用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>";
}
答案 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;
} 也可以。