2009-10-29 73 views
1

循環奇怪的行爲,我有我從一個關聯數組產生與此代碼陣列在PHP

$index_arr = array(); 
foreach($assoc_arr as $key => $val){ 
    $index_arr .= $val; 
} 

當我print_r($index_arr);打印出來,它工作正常索引數組。但是,當我嘗試用foreach打印我得到一個錯誤「的foreach爲無效的論點提供()」

foreach($index_arr as $one){ 
    echo "one: $one<br />"; 
} 

我敢肯定,這是正確的語法還是我太累了,在這一天的時間?

+1

+1來抵消downvote,因爲問題很清楚,downvote沒有解釋。 – Heinzi 2009-10-29 14:26:19

回答

5

你把數組轉換成字符串使用=運算符就可以了。您要使用:

$index_arr[] = $val; 

追加到最後。

此外,在這種特殊情況下,你可以做:

$index_arr = array_values($assoc_arr); 

這確實你的循環做什麼。

2

需要是這樣的:

$index_arr = array(); 
foreach($assoc_arr as $key => $val){ 
    $index_arr[] = $val; 
} 

而且

foreach($index_arr as $key=>$data){ 
    echo "Key: ".$key." Data: ".$data."<br />"; 
} 
+2

或者只是使用'$ index_arr = array_values($ assoc_arr);':) – 2009-10-29 14:25:13

+0

感謝@Lukas只是想到了這一點,並在我回去編輯的路上,乾杯 – 2009-10-29 14:25:47

1
$index_arr .= $val; 

應該

$index_arr[] = $val; 
2

當你做$index_arr .= $val; PHP做了一個字符串操作。您需要做$index_arr[]=$val;