count($ nameArray)未返回正确的值

时间:2017-03-07 05:22:44

标签: php arrays

我有以下代码:

$nameArray = array("Bob", "John", "Ben", "Mike");
for ($i = 0; $i < count($nameArray); $i++){
    $name = $nameArray[$i];
    $nameArray[$name] = strlen($nameArray[$i]);
    echo $nameArray[$i]."'s name is ".$nameArray[$name]." letters long <br>";
}

为什么count($nameArray)会返回8而不是4?

4 个答案:

答案 0 :(得分:3)

通过将新值推入循环,可以更改循环中数组的大小。这就是为什么

答案 1 :(得分:1)

当你声明数组时,它的数字索引为

Array ( [0] => Bob [1] => John [2] => Ben [3] => Mike )

之后,您将使用以下语句使用新索引推送新值:

 $nameArray[$name] = strlen($nameArray[$i]);

它正在创建如下数组:

Array ( [0] => Bob [1] => John [2] => Ben [3] => Mike [Bob] => 3 [John] => 4 [Ben] => 3 [Mike] => 4)

这就是为什么它显示为8

答案 2 :(得分:0)

创建新数组而不是使用相同的数组

$nameArray = array("Bob", "John", "Ben", "Mike");
$nameLength = array();
for ($i = 0; $i < count($nameArray); $i++){
    $name = $nameArray[$i];
    $nameLength[$name] = strlen($nameArray[$i]);
    echo $nameArray[$i]."'s name is ".$nameLength[$name]." letters long <br>";
}

答案 3 :(得分:0)

$nameArray[$name] = strlen($nameArray[$i]);

是数组长度加倍的原因。您将元素长度添加为数组的新元素。所以它的长度增加了一倍。

可能你想要一个新数组用

存储它的长度

$nameLen[$name] = strlen($nameArray[$i]);