1

如何从数组中获取字符串定义为新数组,如何在 php 中编码

$column = array("id","name","value");

假设从 mysql 中找到 3 行

希望结果是这样的

$id[0] = "1";
$id[1] = "6";
$id[2] = "10";

$name[0] = "a";
$name[1] = "b";
$name[2] = "c";

$value[0] = "bat";
$value[1] = "rat";
$value[2] = "cat";

我想从$column数组定义中获取字符串作为新数组。

如何编码?或者,如果我的问题很愚蠢,请提出建议。

谢谢你。

4

6 回答 6

1

我不明白您为什么要像这样对数据进行建模,您要求在调试方面造成伤害。您可以使用“变量变量”来定义它,或者使用 $GLOBALS 动态构建全局变量:

$somevar = "hello"
$$somevar[0] = "first index";  // creates $hello[0]

$GLOBALS[$somevar][0] = "first index"; // creates $hello[0] in global scope
于 2011-01-11T12:06:09.457 回答
1

尝试

$array = array();
foreach ($results as $r){
   foreach ($column as $col ){
       $array[$col][] = $r[$col];
   }
}

extract ($array);

或者你可以简单地这样做

$id = array();
$name = array();
$value = array();

foreach ( $results as $r ){
    $id[] = $r['id']; // or $r[0];
    $name[] = $r['name'];
    $value[] = $r['value'];
}

希望这是你问的

于 2011-01-11T12:06:36.660 回答
1

我对你上一个问题的回答:

$result = mysql_query($sql);
$num = mysql_num_rows($result);
$i = 0;

if ($num > 0) {
  while ($row = mysql_fetch_assoc($result)) {
    foreach($row as $column_name => $column_value) {
      $temp_array[$column_name][$i] = $column_value;
    }
    $i++;
  }

  foreach ($temp_array as $name => $answer) {
    $$name = $answer;
  }
}
于 2011-01-11T12:53:05.897 回答
0

这是非常危险的,因为它可能会覆盖您在代码中认为安全的变量。您正在寻找的是extract

$result = array();

while ($row = mysql_fetch_array($result)) 
  foreach ($column as $i => $c) 
    $result[$c][] = $row[$i];

extract($result);

所以,如果$resultarray( 'a' => array(1,2), 'b' => array(3,4)),最后一行定义变量$a = array(1,2)$b = array(3,4)

于 2011-01-11T12:07:43.820 回答
0

你不能为此使用变量变量,而且你也不应该这样做。但这是你可以做到的:

foreach (mysql_fetch_something() as $row) {
    foreach ($row as $key=>$value) {
        $results[$key][] = $value;
    }
}

extract($results);

理想情况下,您会跳过extract, 并使用$results['id'][1]等。但是如果您只 extract() 子函数中的嵌套数组,那么局部变量范围污染是可以接受的。

于 2011-01-11T12:09:33.157 回答
0

不需要数组或使用 $_GLOBALS,我相信创建基于另一个变量值命名的变量的最佳方法是使用大括号:

$variable_name="value";

${$variable_name}="3";

echo $value;

//Outputs 3

如果您更具体地了解您收到的数组是什么,我可以提供更完整的解决方案,尽管我必须警告您,我从未使用过这种方法,这可能是一个坏主意的迹象。

如果您想了解更多信息,这里有一个有用的链接: http ://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/

于 2011-01-11T13:02:27.647 回答