如何在PHP中更新查询结果中关联数组中的值


how to update value in associative array in the results of query in PHP

我将查询结果存储在变量$result中。我循环遍历$result并检查特定键的值。如果它为null,我希望将"No"作为关键字"customer"的值。

$result=$query->fetchAll(PDO::FETCH_ASSOC);
foreach($result as $row){
if (empty($row['customer'])) {
    $row['customer'] = 'No';
}

现在,我需要从$result创建一个列表。

$list=array();
foreach($result as $key => $value){
$list['result'][$key] = $value;
    var_dump($value);
}

但当我转储并看到值时,我仍然看到null而不是"No"

array
'name' => string 'Rachel' (length=6)
'customer' => null
array
'name' => string 'Kyndall' (length=7)
'customer' => null

请告诉我,如果列表中的"customer"键为null,我如何将"No"作为值。我需要将列表导出到csv文件。

非常感谢。

更改

foreach($result as $row){
if (empty($row['customer'])) {
    $row['customer'] = 'No';
}

foreach($result as $key => $row){
if (empty($row['customer'])) {
    $result[$key]['customer'] = 'No';
}

您需要迭代$row的引用以使其在上工作

$result=$query->fetchAll(PDO::FETCH_ASSOC);
foreach($result as &$row){ // & = by reference
if (empty($row['customer'])) {
    $row['customer'] = 'No';
}

在您的示例中,每次迭代都将创建一个变量$row,该变量与$result的内容无关。这是一份复印件。

使用&将创建对原始数据的引用,请参阅http://php.net/manual/en/language.references.pass.php