PHP 填充关联数组

标签 php associative-array associative array-push

我正在创建一个 data.php 文件,它将一个 json 文件返回到一个 html 文件,我在其中用 data.php 文件中的数据填充一个网格。 我需要它是以下形式的关联数组:

[
 {"CompanyName":"Alfreds Futterkiste","ContactName":"Maria Anders","ContactTitle":"Sales Representative"},
 {"CompanyName":"Ana Trujillo Emparedados y helados","ContactName":"Ana Trujillo","ContactTitle":"Owner"},
 {"CompanyName":"Antonio Moreno Taquera","ContactName":"Antonio Moreno","ContactTitle":"Owner"}
]

现在的问题是,我希望这个 data.php 是通用的,这意味着我不知道列名,也不知道列的数量。 我完成这项工作的唯一方法是使用 switch 语句,但这并不理想(因为我可以做很多情况,但如果表还有一列怎么办)也不是很优雅。

我打赌这可以做得更好,有什么想法吗?

我尝试使用 array_push() 但这不适用于关联数组。

// get columnnames
for ($i = 0; $i < $result->columnCount(); $i++) {
    $col = $result->getColumnMeta($i);
    $columns[] = $col['name'];
}

// fill up array
while ($row = $result->fetch(PDO::FETCH_ASSOC))  {
    switch (count($columns);) {
        case 1 :
            $records[] = array($columns[0] => $row[$columns[0]]);
            break;
        case 2 :
            $records[] = array($columns[0] => $row[$columns[0]], $columns[1] => $row[$columns[1]]);
            break;
        case 3 :
            $records[] = array($columns[0] => $row[$columns[0]], $columns[1] => $row[$columns[1]], $columns[2] => $row[$columns[2]]);
            break;
        case ... // and so on
}   
}

// send data to client
echo json_encode($records);

最佳答案

用这个改变switch代码段

$arr_tmp = array();
for($i = 0; $i < count($columns); $i++)
{
    $arr_tmp[$columns[$i]] = $row[$columns[$i]];
}
$records []= $arr_tmp;

关于PHP 填充关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530212/

相关文章:

php - 如何删除 float 小数部分末尾的零?

php - mysql 进程保持事件状态 - 为什么?

php - MySQL - 检查查询的前 6 个字符以确保它是 SELECT 是否安全?

php - 在 PHP 中访问关联数组

php - 链接查询 - 无法获得和/或工作

php - 如何在 PHP 中将 3 个数组合并为一个关联数组

awk 关联数组增长很快

c++ - 如何实现关联数组/映射/哈希表数据结构(一般和 C++)

php - 可以防止MySQL在 'UNCOMPRESS'之后重命名键吗?

arrays - 循环 AWK 关联数组