2012-07-21 48 views
0

我計算數據庫中的列(字段)的數量,現在我想爲每列創建一個數組。這是否有可能?例如:從整數值動態創建數組。 PHP

$num = mysql_num_fields($query); 
for($i=0; $i<$num; $i++){  // loop 1 
    $field_names[] = mysql_field_name($query,$i); 
} 
for($i=0; $i<$num; $i++){ // loop 2 
    while($row = mysql_fetch_array($query)){ // loop 3 
     $array[] = $row[$field_names[$i]] 
    } 
} 

現在我基本上希望$陣列[]變量改變每次循環2點結束,使得在結束說3個環我有3個不同陣列。那可能嗎?如果有,請解釋一下嗎?

+0

你能給出一個預期結果的例子嗎? – 2012-07-21 05:18:56

+0

而不是做mysql_fetch_array,看看mysql_fetch_assoc。可能會幫助你更多 – Kris 2012-07-21 05:21:00

+0

並嘗試使用mysqli,如果它是新代碼,因爲它效果更好。 http://stackoverflow.com/questions/171400/which-is-fastest-in-php-mysql-or-mysqli – 2012-07-21 05:21:09

回答

1

而不是每個列的數組,您可以創建一個數組,字段名稱作爲一個鍵。

$num = mysql_num_fields($query); 
for($i=0; $i<$num; $i++){  // loop 1 

    $field_names = mysql_field_name($query,$i); 
    $field_array[$field_names] = array(); 
} 

這之後,您將獲得以下數組

print_r($field_array); 

//出把

Array(
[fieldname1] => Array() 
[fieldname2] => Array() 
[fieldname3] => Array() 
[fieldname4] => Array() 
) 
+0

它是爲你工作嗎? – 2012-07-21 12:04:08

0

林不知道你爲什麼會想這樣做..但它是可能的。 。

for($i=0; $i<$num; $i++){ // loop 2 
    while($row = mysql_fetch_array($query)){ // loop 3 
     $arrayName = "array$i"; 
     ${$arrayName}[] = $row[$field_names[$i]] 
    } 
} 

因此,如果你有3個循環,你將有$ array1,$ array2,$ array3變量

但是,我真的會反對這個建議,並重新考慮你的設計,必須有更好的方法來做到這一點。