我将查询结果存储在变量$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