【问题标题】:Create Array from Foreach从 Foreach 创建数组
【发布时间】:2012-03-06 20:53:14
【问题描述】:

我有一个 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 数据。感谢任何人愿意分享的任何见解。

【问题讨论】:

标签: php arrays foreach


【解决方案1】:

您需要将[] 添加到$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);
    }

【讨论】:

  • 我只得到 $names[$row["nombre"]] = array('id' => $row["id"]); --------结果---------> key = Selección perfil , value = Array , 为什么在 value 中得到数组?
  • 您需要将 [] 添加到 $cart 数组
【解决方案2】:
$cart = array();

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);
}

print_r($cart);

【讨论】:

    【解决方案3】:

    试试这个:

    $cart=array();
    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);
        }
    

    您将购物车视为变量而不是数组

    【讨论】:

      【解决方案4】:

      您的变量 $cart 在每个循环中都会被覆盖,因为您每次都在调用 array()

      相反,在循环之外声明您的数组,并根据需要向其中添加值:

      $cart = array();
      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);
      }
      

      【讨论】:

        【解决方案5】:

        解决这个问题的方法是首先创建一个变量$cart = array(); 然后做foreach(); 我在下面写了代码,请通过它

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-20
          • 2011-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多