php - 从 Foreach 创建数组

标签 php arrays foreach

我有一个 Mysql 表,其中包含一列 JSON 数据和一列金额。 目标是提取 JSON 数据和金额,并在 foreach 循环中构建一个数组。 这是我的代码:

$sql = "SELECT `Amount`, `NewObject` FROM `mb_cart` WHERE `MyID` = '$id'";
$data_main = $db->query($sql);

这是我用来构建数组的语句:

foreach ($data_main as $transaction_main) {
    $json_decoded = json_decode($transaction_main);
    $cart = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName);
}

然而,当我运行它时,我只返回第一个记录集并且金额为空,但列出了 JSON 数据。感谢任何人愿意分享的任何见解。

最佳答案

您需要将 [] 添加到 $cart 数组。每次运行 foreach 都会覆盖变量 $cart。

像这样的东西会起作用:

foreach ($data_main as $transaction_main) {
    $json_decoded = json_decode($transaction_main);
        $cart[] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName);
    }

或者如果您希望数组键与每一行的 ID 相匹配:

注意:您需要在 IE 之上以某种方式设置 $id 变量:SELECT id, amount 还请注意,如果 id 中的整数,您可能会遇到问题 是非唯一的。例如(1,1,2,3,4,5,6)它只会显示 1 的最后一个 id 而不是两者(因为键是重复的).

foreach ($data_main as $transaction_main) {
    $json_decoded = json_decode($transaction_main);
        $cart[$id] = array('Amount' => $amount, 'CodeType' => $json_decoded->data->Type->data->codeType, 'Name' => $json_decoded->data->Name, 'SiteName' => $json_decoded->data->SiteName);
    }

关于php - 从 Foreach 创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9294664/

相关文章:

php - 检查 URL scheme 是 HTTP 还是 HTTPS

javascript - 如果不实例化(new -'ing')它: var a = Array.prototype.slice.call(arguments),这怎么可能?

arrays - 来自返回数组最大值的函数的 C 段错误

javascript - 使用 foreach 和 switch 循环遍历数组并在 angularjs 中返回不同的值

dictionary - 如何避免通过foreach函数在dart Map中使用await键

php - 在 Wamp 服务器上编译 C 代码

php - AJAX 发布不工作,数据似乎没有通过

javascript - jQuery <select> 选项仅启用一些选项

c - 如何声明固定大小元素的二维数组指针

php - php foreach循环中的HTML表,其中仅当元素等于表列标题名称时才填充单元格数据