【问题标题】:Use a column as array key [duplicate]使用列作为数组键[重复]
【发布时间】:2020-02-16 07:50:17
【问题描述】:

我想使用带有数字的列作为数组键。

我在 fetchAll 之后使用了一个循环,但我想知道是否可以使其直接。

我的查询:

$RequeteSql = $db->query("
    SELECT *
    FROM PouvoirsNumeros
        LEFT JOIN Pouvoirs ON (Pouvoirs.Pouvoir_Id = PouvoirsNumeros.Pouvoir_Id)
    WHERE
        PouvoirsNumeros.TypePerso = 'Ange'
    ORDER BY
        Pouvoirs.Pouvoir_Nom");
$ResultatRequete = $RequeteSql->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);

有了它,我有:

(
    [0] => Array
        (
            [TypePerso] => Ange
            [Numero_Des] => 711
            [Pouvoir_Id] => 157
            ...
        )
...
)

我想用Pouvoir_Id替换密钥:

(
    [157] => Array
        (
            [TypePerso] => Ange
            [Numero_Des] => 711
            [Pouvoir_Id] => 157
            ...
        )
...
)

与PDO::FETCH_GROUP|PDO::FETCH_ASSOC:

(
    [157] => Array
        (
            [0] => Array
                (
                    [TypePerso] => Ange
                    [Numero_Des] => 711
                    [Pouvoir_Id] => 157
                    ...
                )
        )
...
)

可以直接用PDO制作吗?

【问题讨论】:

  • 我想你不能用 PDO 做到这一点,只有迭代结果并重建你的数组。
  • 我认为 PDO 无法为您处理。但是您可以使用array_column() 自己使用一个衬垫来完成,而无需任何手动 foreach 循环。 Here's an answer about it
  • 如果你只选择两个字段PDO::FETCH_KEY_PAIR可以帮助你。

标签: php pdo


【解决方案1】:

认为这会起作用......

$RequeteSql = $db->query("
    SELECT Pouvoir_Id as ind, TypePerso, Numero_Des, Pouvoir_Id
    FROM PouvoirsNumeros
        LEFT JOIN Pouvoirs ON (Pouvoirs.Pouvoir_Id = PouvoirsNumeros.Pouvoir_Id)
    WHERE
        PouvoirsNumeros.TypePerso = 'Ange'
    ORDER BY
        Pouvoirs.Pouvoir_Nom");
$ResultatRequete = $RequeteSql->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC);

等我找到骗子我会删除它。

【讨论】:

猜你喜欢
  • 2012-05-12
  • 2016-01-07
  • 2018-11-09
  • 1970-01-01
  • 2012-02-20
  • 2016-02-02
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多