PHP:foreach 循环与 array_merge 来创建 json 对象

标签 php mysql arrays json foreach

我是 php 的新手,但到目前为止我真的很喜欢它! 现在我偶然发现了 array_merge 的问题。

这是我的代码,它只是抓取我数据库中指定的每个表,然后将它变成一个大的 json 文件。:

  $tables = array("buildings", "medical", "other", "tools", "traps", "weapons"); 

    foreach ($tables as $table) {

        // Get tables from database
        $sth = $db->query("SELECT * FROM $table");
        $result = $sth->fetchAll();

        // Merge arrays together
        if ($arr === null) {
            //echo "its 0 <br/> ";
            $arr = array( "$table" => $result );
        } else {
            //echo "more than 0 <br/> ";
            $arr2 = array( "$table" => $result );
            $merge = array_merge($arr, $arr2);
        }

    } //End loop

    echo $merge;

到目前为止它以某种方式工作,我设法让第一个表“建筑物”和最后一个表“武器”以我想要的方式完美显示!

但我不明白为什么它会跳过其他的.. 我相信它与 $arr2 有关,我需要为每个表指定一个唯一的数组。但我怎样才能做到这一点?这是要走的路还是有更有效的方法来实现这一目标? 谢谢!

最佳答案

由于这一行而失败

    $merge = array_merge($arr, $arr2);

您的合并始终是 $arr($tables 中的第一个条目)和 $arr2(正在处理的最新条目)的合并。您没有将数据与之前合并的数据合并,例如

    $arr = array_merge($arr, $arr2)

此外,您可以通过将 $arr 设置为空数组来开始,从而摆脱 if/else 逻辑。

    $arr = array();

关于PHP:foreach 循环与 array_merge 来创建 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29825436/

相关文章:

php - SQL 查询中的变量被视为列

php - 使用 fgetcsv() 将数据导入 mysql 并将空值存储为零

php - 升序排列数组键

php - 如何从 PHP 将日期插入 MySQL

Javascript/PHP/Jquery - 自动填充和数据加密

PHP,合并多维数组中的键

php - 选择用户以前没有看过的帖子

mysql - 根据我从中选择的表设置 View 的列值

arrays - 使用迭代器而不是 Swift 中的位置访问数组的元素

python - 检查列表是否为空或仅包含零