execute(); /* Fetch all of the remaining -6ren">
gpt4 book ai didi

php - 在 PDOStatement::fetchAll() 之后将 php 函数应用于一列

转载 作者:行者123 更新时间:2023-11-29 11:39:48 26 4
gpt4 key购买 nike

假设我有这段代码:

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the remaining rows in the result set */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>

输出:

Array
(
[0] => Array
(
[name] => pear
[0] => pear
[colour] => green
[1] => green
)

[1] => Array
(
[name] => watermelon
[0] => watermelon
[colour] => pink
[1] => pink
)

)

在这段代码之前,我设计了以下简单的函数:

function changecolour($data){
if($data == 'pink'){ $data = 'red'; }
return $data
}

问题:如何将函数应用于仅具有键 [colour] 的数组(应用于数据库中的一列)并使用新列修复整个数组?另外,如果数组很大,您的方法可能会产生什么影响?如果您使用 twig,您建议如何在 mysql 表的一列上应用函数?

最佳答案

最快的方法是更新查询,如下所示:

SELECT name, IF(colour='pink','red',color) FROM fruit

另一方面,如果绝对有必要使用所描述的功能,您可以这样做:

$result = array_map(function($row) {
$row['color'] = changecolour($row['color']);
return $row;
});

或者使用 foreach 循环:

foreach ($result as &$row) {
$row['color'] = changecolour($row['color']);
}

UPD:再考虑一下,您可以为更广泛的情况添加新功能:

function apply_column($rows, $column, $function) {
foreach ($rows as &$row) {
$row[$column] = $function($row[$column]);
}
return $rows;
}

并使用它:

$result = apply_column($result, 'color', 'changecolour');

关于php - 在 PDOStatement::fetchAll() 之后将 php 函数应用于一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36003885/

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