2011-02-25 215 views
1

我以列名稱的csv變量開始。然後將其分解爲一個數組,然後進行計數並投入到應該創建另一個數組的循環中。在for循環中創建數組

每當我運行它,它進入這個無盡的循環,只是在我的瀏覽器中...直到它死了。 :(

這裏是代碼..

$columns = 'id, name, phone, blood_type'; 

$column_array = explode(',',$columns); 
$column_length = count($column_array); 

//loop through the column length, create post vars and set default 
for($i = 0; $i <= $column_length; $i++) 
{ 
    $array[] = $iSortCol_.$i = $column_array[$i]; 
    //create the array iSortCol_1 => $column_array[1]... 
    //$array[] = 'iSortCol_'.$i = $column_array[0]; 
} 

我想擺脫這一切都是一個新的數組,看起來像這樣..

$goal = array( 
    "iSortCol_1" => "id",  
    "iSortCol_2" => "name", 
    "iSortCol_3" => "phone", 
    "iSortCol_4" => "blood_type" 
); 
+0

我發誓我是indenting ....對不起 – Peter 2011-02-25 07:20:03

+1

我會建議在使用die($ column_count)進入循環之前打印$ column_length的值並查看該值。另外,你正在使用變量$ column_array [0],它沒有利用$ i變量。 – 2011-02-25 07:24:52

回答

1
$array[] = 'iSortCol_'.$i = $column_array[0]; 

我認爲這是因爲您將$ column_array [0]的值賦值給$ i,並將其用作循環索引。使用另一個變量來完成該操作,否則它會繼續。

編輯測試和粘貼輸出

工作代碼,只是測試它在本地

$columns = 'id, name, phone, blood_type'; 
$column_array = explode(',',$columns); 
$column_length = count($column_array); 
$array = array(); 
for($i = 0; $i < $column_length; $i++) 
{ 
    //create the array iSortCol_1 => $column_array[1]... 
    $array['iSortCol_'.$i] = $column_array[$i]; 
} 

var_dump($array); 

這將輸出

array 
    'iSortCol_0' => string 'id' (length=2) 
    'iSortCol_1' => string ' name' (length=5) 
    'iSortCol_2' => string ' phone' (length=6) 
    'iSortCol_3' => string ' blood_type' (length=11) 

這是不是你想要的?

+0

你實際上並沒有分配給$ i(或者你不應該)。你實際上是分配給''constantstring'。$ i',如果不是PHP的魔法,這根本不應該是可能的。 :) – GolezTrol 2011-02-25 07:28:41

+0

試過...它仍然崩潰..服務器正在返回>>>致命錯誤:允許內存大小67108864字節耗盡(試圖分配14個字節) – Peter 2011-02-25 07:30:03

+0

@GolezTrol ..我該怎麼做? – Peter 2011-02-25 07:31:23

0

我想你的意思是寫:

$array['iSortCol_'.$i] = $column_array[0]; 
+0

試圖...它仍然崩潰..服務器正在返回>>>致命錯誤:允許67108864個字節的內存大小用盡(試圖分配14個字節) – Peter 2011-02-25 07:29:30

+0

您必須做錯某些事情或者其他代碼崩潰。我複製了你的代碼,也得到了錯誤。然後我修改了那條符合我建議的線。現在'var_dump($ array)'返回array(5){[「iSortCol_0」] => string(2)「id」[「iSortCol_1」] => string(2)「id」[「iSortCol_2」] => string (2)「id」[「iSortCol_3」] => string(2)「id」[「iSortCol_4」] => string(2)「id」} – GolezTrol 2011-02-25 07:34:21

+0

因爲你(和我)都是'id'使用'$ column_array [0]'而不是'$ column_array [$ i]'。 :D – GolezTrol 2011-02-25 07:36:46

2

簡單地改變

$array[] = 'iSortCol_'.$i = $column_array[0]; 

$array['iSortCol_'.$i] = $column_array[$i]; 

<=<for循環,否則就會顯示空白數組值在您的最終結果。因爲你需要去但不包括的長度$column_array

+0

你的權利...但有幾個人改變我的代碼$ column_array [$我];到$ column_array [0]; – Peter 2011-02-25 07:40:49

+0

@Peter:這將簡單地將'id'(數組的0索引值)分配給你的新數組。你需要增加密鑰,因此'$ i'。 – 2011-02-25 07:42:54