【问题标题】:Set Indexes on array of returned MySQL Values在返回的 MySQL 值数组上设置索引
【发布时间】:2016-02-09 17:13:19
【问题描述】:

我试图将二维 PHP 数组的索引从数字索引设置为键。到目前为止我所拥有的是:

$result = mysql_query("SELECT * FROM settings");
 if(mysql_num_rows($result) > 0 ){
        while($row = mysql_fetch_assoc($result)){
              $dataArray[] = $row ;
        }
}       

$value_to_display = $dataArray[0]['value'];

但是,我希望能够使用的是这样的:

$value_to_display = $dataArray['some_index_value']['value'];

有谁知道我怎么能做到这一点?我尝试替换制作一个键数组,然后使用组合,但我只能手动执行此操作。任何帮助表示赞赏!

【问题讨论】:

  • stop using mysql_* functionsThese extensions 已在 PHP 7 中删除。了解PDOMySQLiprepared 语句并考虑使用 PDO,it's really pretty easy
  • @JayBlanchard 你说的很对,但由于一系列复杂的原因,我不得不挖掘一些旧代码,而且还可以升级。
  • $dataArray[$row["anycolumn"]][] = $row ;
  • 为什么要将这些从一个阵列移动到另一个阵列?除非您尝试创建数组数组,否则第一个数组 $row[] 似乎完全可以接受。

标签: php mysql associative-array


【解决方案1】:

怎么样

while ($row = mysql_fetch_assoc($result)) {
   $dataArray[$row['somefield']] = $row;
}

假设somefield 是唯一的,您将获得一个由该字段的值作为键的数组。如果您需要键入来自其他地方的名称,例如

$keynames = array('foo', 'bar', 'baz', ....);
$idx = 0;
while($row = mysql_fetch_assoc($result)) {
   $dataArray[$keynames[$idx]] = $row;
   $idx++;
}

只需确保您有足够的键名来处理从查询中返回的所有记录。

【讨论】:

  • 完美运行,我知道我错过了一些小钥匙(如果你能原谅无意的双关语)。非常感谢!
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 2016-05-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 2018-01-01
相关资源
最近更新 更多