【问题标题】:Convert array values to array of vars PHP将数组值转换为变量数组 PHP
【发布时间】:2012-08-31 18:08:42
【问题描述】:

无键的FROM数组:

$array = array('apple','bee','carrot','dragon','elephant')

$newarray = ($apple,$bee,$carrot,$dragon,$elephant)

为什么: 我想创建灵活的函数来从 mysql 数据库中获取字段,如下所示:

<?php
$query = "SELECT ".$array." FROM table";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
        extract($row);
        echo $newarray;
}
?>

所以我可以:

  • 选择苹果、蜜蜂、胡萝卜和回声 $apple、$bee 和 $carrot
  • 选择蜜蜂、胡萝卜、大象和回声 $bee、$carrot 和 $elephant
  • 或其他。

【问题讨论】:

  • echo $row['apple'], $row['bee'], $row['carrot'] 有什么问题?
  • 没有错,但我如何将$array = array('apple','bee','carrot') 转换为$row['apple'], $row['bee'], $row['carrot']

标签: php arrays variable-names


【解决方案1】:

你为什么不直接从数据库中获取一个关联数组,然后像这样使用关联数组中的键:

// assume field names are 'apple', 'bee', 'carrot', etc.
while($row = mysql_fetch_assoc($result)){    
    foreach($row as $key => $value) {
        // this will set variables as $apple, $bee, $carrot, etc.
        $$key = $value;
    }
}

当然,如果您在结果集中获得多于一行,这并不是那么实用,因为变量只会被覆盖。

您想要做的关键是使用变量变量(在这种情况下为$$key

哦,是的,您也不应该使用 mysql_* 函数,而应该使用 mysqli_* 或 PDO。

【讨论】:

  • 会试试这个。我读到了 mysqli 而不是 mysql,但我还没有做对!谢谢!
  • 也许这$$key${$value} 是一样的?
  • @Leo 使用变量变量的概念是一样的。从讨论看来,您希望 DB 字段的名称是变量名称,在这种情况下您将使用键。如果您真的想引用与数据库值同名的变量,那么在值名称上使用变量变量会得到您想要的。
  • 实际上我试图处理在函数中键入的数组以正确调用 mysql 数据库。非常感谢你,迈克布兰特!你很有帮助!现在我要强制学习mysqli!
【解决方案2】:
foreach($array as $value){
    $newarray[] = ${$value};
    //Edited: maybe you'll need to reset the array after use it
    unset($newarray);
}

知道了!

谢谢大家!

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2011-12-18
    相关资源
    最近更新 更多