从整数值动态创建数组。 PHP

Posted

技术标签:

【中文标题】从整数值动态创建数组。 PHP【英文标题】:Dynamically create arrays from integer value. PHP 【发布时间】:2012-07-20 08:10:01 【问题描述】:

我计算了数据库中列(字段)的数量,现在我想为每一列创建一个数组。这有可能吗?例如:

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

现在我基本上希望 $array[] 变量在每次循环 2 结束时改变,这样在 3 个循环结束时我就会有 3 个不同的数组。那可能吗?如果可以,有人可以解释一下吗?

【问题讨论】:

你能举一个预期结果的例子吗? 而不是执行 mysql_fetch_array,而是查看 mysql_fetch_assoc。可能会帮助你更多 并尝试使用 mysqli,如果它是新代码,因为它工作得更好。 ***.com/questions/171400/… 例如说 db 表有 x 个字段,我想运行相同的 x 个循环,并且在每个循环中我想创建一个新数组。说 x = 3 然后我想得到 array1[]、array2[] 和 array3[] 创建数组很容易。 for ($i = 0, $l = 3; $i &lt; $l; $i += 1) $array = array(); $array[] = X; 。你为什么要那个?你想在它们消失之前对它们做什么,或者你不能访问它们,因为你不知道它们叫什么?您实际上想在数组中放入什么或对它们做什么?如果你想创建一个 2D 矩阵,你最好先创建一个。 【参考方案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() 
)

【讨论】:

【参考方案2】:

我不知道你为什么要这样做..但有可能..

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 变量

但是,我真的建议不要这样做并重新考虑您的设计,必须有更好的方法来做到这一点。

【讨论】:

以上是关于从整数值动态创建数组。 PHP的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用new操作符创建动态数组?

PHP:如何修改动态多维数组

创建PHP动态多字段的JSON格式

动态创建多维对象/数组

如何在 PHP 中为表创建动态标题

您可以在 PHP 中动态创建实例属性吗?