【问题标题】:Query result array modifying查询结果数组修改
【发布时间】:2012-09-12 23:22:32
【问题描述】:

作为 MySQL 查询的结果,我得到了以下数组:

Array
(
    [0] => Array
        (
            [id] => 11
            [owner] => Mark
        )

    [1] => Array
        (
            [id] => 10
            [owner] => David
        )

    [2] => Array
        (
            [id] => 9
            [owner] => Poul
        )

    [3] => Array
        (
            [id] => 8
            [owner] => Peter
        )

    [4] => Array
        (
            [id] => 7
            [owner] => Peter
        )

    [5] => Array
        (
            [id] => 6
            [owner] => Lucas
        )

)

有没有办法修改它,使用PHP函数并省略foreach进程?

我希望它看起来如下:

Array
(
    11 => Mark
    10 => David
    9 => Poul
    8 => Peter
    7 => Peter
    6 => Lucas
)

所以,基本上它应该从idowner 值构建这个数组。喜欢id => owner

这可能吗?

【问题讨论】:

  • 没有使用魔法,我看不出来。
  • 听起来很完美!使用魔法,你会怎么做?
  • 魔术师从不泄露他的秘密:P
  • 说到泄露的秘密,也许SQL代码可以用来解决这个问题......
  • 只需使用foreach。为什么要解决?

标签: php mysql arrays pdo


【解决方案1】:

如果您使用 PDO,您可以执行以下操作:

$stmt = $dbh->query("SELECT id, owner FROM table");
$arr = $stmt->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);

这应该给你一个数组,其中数组的索引是结果中第一列的值,即 id。

【讨论】:

    【解决方案2】:

    如果你的原始数组是$arr,那么下面的代码会根据你的需要改变它:

    $tot = count($arr);
    for($i=0;$i<$tot;$i++) {
       $key = $arr[$i]['id'];
       $val = $arr[$i]['owner'];
       unset($arr[$i]);
       $arr[$key] = $val;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-31
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多