gpt4 book ai didi

php - 将 mysql 列值添加到 php 数组时替换它们

转载 作者:行者123 更新时间:2023-11-29 00:03:19 24 4
gpt4 key购买 nike

我有一个名为“当前状态”的表,它包含三列:

id  name    state
1 FXD 1
2 GFX 3
3 ATOM 2
4 FARB 3
5 REX 1
6 FRX 2

在下面的代码中,我将它放入数组并打印它:

$exc = $conn->prepare("SELECT name,state from current_state");
$exc->execute();
while($finalResult = $exc->fetch(PDO::FETCH_ASSOC))
{
$tables[] = $finalResult;
}
var_dump($tables);

但问题在于,尽管数字代表州列值,但每个数字都有其含义:

1 = running
2 = finished
3 = dimnished

所以我想要的是通过比较状态列的值将上述字符串值立即添加到表数组中。

列的当前打印结果看起来像

array (size=2)
'name' => string 'FRX' (length=11)
'state' => string '2' (length=1)

但我想要的是:

array (size=2)
'name' => string 'FRX' (length=11)
'state' => string 'finished' (length=8)

最佳答案

您可以使用 CASE 表达式在 SQL 中执行此操作:

SELECT name,
CASE state
WHEN 1 THEN 'running'
WHEN 2 THEN 'finished'
WHEN 3 THEN 'diminished'
END AS state
FROM current_state

或者您可以在 PHP 中使用数组来实现:

$statemap = array(1 => 'running', 2 => 'finished', 3 => 'diminished');

然后您的 PHP 循环将执行映射:

while ($finalResult = $exc->fetch(PDO::FETCH_ASSOC)) {
$finalResult['state'] = $statemap[$finalResult['state']];
$tables[] = $finalResult;
}

最后,您可以有另一个包含映射的表,并与之连接:

CREATE TABLE state_mappings (
state_num INT PRIMARY KEY,
state_name VARCHAR(20)
);

SELECT name, state_name
FROM state AS s
JOIN state_mappings AS m ON s.state = m.state_num

关于php - 将 mysql 列值添加到 php 数组时替换它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28701405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com