假设我有这段代码:
<?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表的一列上应用函数?
答案 0 :(得分:1)
最快的方法是更新这样的查询:
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');