2017-03-07 34 views
0

我有以下代碼:

$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?

回答

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

3

您可以通過向其中推入新值來更改循環中數組的大小。這就是爲什麼

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>"; 
} 
0

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

新數組就是爲什麼你數組的長度增加了一倍的原因。您將元素長度作爲新元素添加到數組中。所以它的長度增加了一倍。

可能是你想要一個新的數組來存儲它的長度與

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