【问题标题】:Dynamically create arrays from integer value. PHP从整数值动态创建数组。 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,如果它是新代码,因为它工作得更好。 stackoverflow.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 矩阵,你最好先创建一个。

标签: php arrays loops


【解决方案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 变量

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

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      相关资源
      最近更新 更多