php array_merge无法替换现有的

时间:2017-10-08 14:41:52

标签: php

我知道这可能是PHP中的一个老问题,但很难理解问题出在哪里。

代码:

$cart = json_decode('{"ProductID":"3","Product_num":"1"} ',true);
$new_product = json_decode('{"ProductID":"1","Product_num":"1"} ',true);
$test = array_merge((array)$new_product,(array)$cart); 
echo json_encode($test);

回音结果为:{“ProductID”:“3”,“Product_num”:“1”}

为什么两个php数组一起使用? 我只希望结果是:

[{"ProductID":"1","Product_num":"1"},{"ProductID":"3","Product_num":"1"}]

数组键的问题是否相同?

~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~

 if (isset($_SESSION['shoppingCart_list'])){
    //$periodarray=$_SESSION['shoppingCart_list'];
    $periodarray = array();
    $periodarray = json_decode($_SESSION['shoppingCart_list'], true);
    $periodarray = array_merge($periodarray,array("product_id"=>$product_id,"product_qty"=>$product_qty));
    $periodjson = json_encode($periodarray);
    $_SESSION['shoppingCart_list'] = $periodjson;
}else{
    $periodarray=array();
    $periodarray = array_merge($periodarray,array("product_id"=>$product_id,"product_qty"=>$product_qty));
    $periodjson = json_encode($periodarray);
    $_SESSION['shoppingCart_list'] = $periodjson;
}

在$ _SESSION ['shoppingCart_list']寄存器的第一次,它呈现一个正确的数组{"product_id":"3","product_qty":"1"},之后我再次调用该函数并尝试更新数组,该数组只显示最新的数组。

是否需要创建一个包含两个数组的新数组?

3 个答案:

答案 0 :(得分:2)

你只需创建一个包含两个数组的新数组......

$test = [$new_product,$cart]; 
echo json_encode($test);

由于数组是关联的 - 在具有特定键的数组中只能有1个值,但您只需要一组数据而不是一个合并数组。

答案 1 :(得分:0)

购物车应该是一个数组...

$cart = []; // New Array 
$cart[] = json_decode('{"ProductID":"3","Product_num":"1"} ',true); // add new Item to the cart Array
$new_product = json_decode('{"ProductID":"1","Product_num":"1"} ',true); 
$cart[] = $new_product; // add new Item to the cart Array
echo json_encode($cart);

结果:

  

[{ “产品ID”: “3”, “Product_num”: “1”},{ “产品ID”: “1”, “Product_num”: “1”}]

答案 2 :(得分:0)

像这样使用array_push

<?php
 $newArray = [];
 $cart = json_decode('{"ProductID":"3","Product_num":"1"} ',true);
 $new_product = json_decode('{"ProductID":"1","Product_num":"1"} ',true);
 array_push($newArray,$cart);
 array_push($newArray,$new_product);
 echo json_encode($newArray);