我有以下代码:
$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?
答案 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]);