Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何在已经存在数组值的数组中追加数组_Php_Arrays - Fatal编程技术网

PHP:如何在已经存在数组值的数组中追加数组

PHP:如何在已经存在数组值的数组中追加数组,php,arrays,Php,Arrays,我有以下代码: $counter = $total_amt = 0; $data = ""; $address = array( 'name' => filter_var($_POST["cust_name"], FILTER_SANITIZE_STRING), 'contact' => filter_var($_POST["cust_contact"], FILTER_SANITIZ

我有以下代码:

$counter = $total_amt = 0;
$data = "";

$address = array(
                    'name'       => filter_var($_POST["cust_name"], FILTER_SANITIZE_STRING),
                    'contact'    => filter_var($_POST["cust_contact"], FILTER_SANITIZE_NUMBER_INT),
                    'pincode_id' => filter_var($_POST["cust_pincode"], FILTER_SANITIZE_NUMBER_INT),
                    'address'    => filter_var($_POST["cust_address"], FILTER_SANITIZE_STRING),
                    'landmark'   => filter_var($_POST["cust_landmark"], FILTER_SANITIZE_STRING),
                    'state_id'   => filter_var($_POST["cust_state"], FILTER_SANITIZE_STRING),
                    'city_id'    => filter_var($_POST["cust_city"], FILTER_SANITIZE_STRING)
                );

foreach ($_SESSION["cart_item"] as $item)
    {
        if($counter < 1)
            {
                $data = array(
                                'item'     => $item['id'],
                                'quantity' => $item["quantity"],
                                'price'    => $item["price"]
                             );
            }
        elseif($counter >= 1)
            {
                $data = array(
                                'item'     => $item['id'],
                                'quantity' => $item["quantity"],
                                'price'    => $item["price"]
                             );
                $data[] = $data;
            }

        $total_amt = $total_amt + $item["final_price"];
        $counter ++;
    }
我期待这种订单

Array
  (
      [0] => Array
        (
           [item] => 2
           [quantity] => 2
           [price] => 670
        )
      [1] => Array
        (
           [item] => 3
           [quantity] => 1
           [price] => 810
        )

 )
现在的情况是,我使用php会话在购物车中添加了两个产品。我想将该会话变量添加到和数组中,然后使用serialize函数将其存储在数据库中。但是,我无法以如上所示的数组格式存储变量


我甚至尝试过array_merge()函数和其他逻辑,但没有一个给出这种输出。有人能帮我解释一下这个逻辑吗。提前感谢

将此更改为:

if($counter < 1)
{
      $data = array(
           'item'     => $item['id'],
           'quantity' => $item["quantity"],
           'price'    => $item["price"]
      );
}
elseif($counter >= 1)
{
     $data = array(
            'item'     => $item['id'],
            'quantity' => $item["quantity"],
            'price'    => $item["price"]
                  );
     $data[] = $data;
}
if ($counter < 1)
{
    $data[] = array(
        'item' => $item['id'],
        'quantity' => $item["quantity"],
        'price' => $item["price"]
    );
}
elseif ($counter >= 1)
{
    $data[] = array(
        'item' => $item['id'],
        'quantity' => $item["quantity"],
        'price' => $item["price"]
    );
}
if($counter<1)
{
$data=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
}
elseif($counter>=1)
{
$data=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
$data[]=$data;
}
这个:

if($counter < 1)
{
      $data = array(
           'item'     => $item['id'],
           'quantity' => $item["quantity"],
           'price'    => $item["price"]
      );
}
elseif($counter >= 1)
{
     $data = array(
            'item'     => $item['id'],
            'quantity' => $item["quantity"],
            'price'    => $item["price"]
                  );
     $data[] = $data;
}
if ($counter < 1)
{
    $data[] = array(
        'item' => $item['id'],
        'quantity' => $item["quantity"],
        'price' => $item["price"]
    );
}
elseif ($counter >= 1)
{
    $data[] = array(
        'item' => $item['id'],
        'quantity' => $item["quantity"],
        'price' => $item["price"]
    );
}
if($counter<1)
{
$data[]=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
}
elseif($counter>=1)
{
$data[]=数组(
'item'=>$item['id'],
“数量”=>$item[“数量”],
“价格”=>$item[“价格”]
);
}

像这样修改脚本。您还可以删除无用的代码

$data = array();
...

foreach ($_SESSION["cart_item"] as $item)
    {

         $data[] = array(
             'item'     => $item['id'],
             'quantity' => $item["quantity"],
             'price'    => $item["price"]
         );
        $total_amt = $total_amt + $item["final_price"];
    }   

问题是您正在重用变量
$data

当你这样做的时候

$data = array(
                'item'     => $item['id'],
                'quantity' => $item["quantity"],
                'price'    => $item["price"]
             );
它抛出旧的
$data
数组,并用该数组替换它

然后你会:

$data[] = $data;
并将此数组的副本添加到自身

你可以简单地写:

$data[] = array(
                'item'     => $item['id'],
                'quantity' => $item["quantity"],
                'price'    => $item["price"]
             );
将新元素添加到包含此数组的
$data

如果($counter==1),测试
也不需要对第一个条目执行不同的操作。您应该在循环之前将
$data
初始化为空数组

$data = array();

不要对两个数组使用相同的变量名
$data
。那么我应该如何附加它呢?我的意思是说我的逻辑哪里出了问题,我应该在什么时候实现新变量,这样即使有两个以上的数组,也可以轻松添加它们。我的答案中已经解释过了。
new Array()
在PHP中?还有一个问题@Dez我想问的是,我已经创建了这样的数组
$data[$item['id']=Array()
这意味着它将创建一个名为的数组值,
$item['id']
中的值是什么,我要做的是创建一个名为total的最后一个数组来存储其中的总金额。如何做到这一点?能否请您详细说明?无论如何,你应该用你新发现的疑问独立地提出一个新问题。哦,我想我明白你的意思了。循环完成后,可以向数组中添加新元素。例如,在您的案例中:
$data['total']=array('price'=>$total\u amt)