2012-07-21 52 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变量

但是,我真的会反对这个建议,并重新考虑你的设计,必须有更好的方法来做到这一点。