PHP-尝试创建数组似乎不起作用

PHP-尝试创建数组似乎不起作用,php,arrays,Php,Arrays,代码如下: function create_order_with_custom_products() { $orderGenerator = new OrderGenerator(); $orderGenerator->setCustomer(6907); $orderGenerator->createOrder(array( // Add configurable product array( 'pr

代码如下:

function create_order_with_custom_products()
{
    $orderGenerator = new OrderGenerator();
    $orderGenerator->setCustomer(6907);

    $orderGenerator->createOrder(array(
        // Add configurable product
        array(
            'product' => 30151,
            'qty' => 1
        ), array(
            'product' => 30150,
            'qty' => 2
        ),
    ));
}
我必须创建具有以下结构的数组:

        array(
            'product' => 30151,
            'qty' => 1
        ), array(
            'product' => 30150,
            'qty' => 2
        ),
我正在尝试创建一个具有相同结构的数组,如下所示:

foreach($ItemsInCart['productid'] as $key=>$value){
    $ProductId = $value;
    $ProductQty = $ItemsInCart["productqty"][$key];
    $product_id = $ProductId; // Replace id with your product id
    $qty = $ProductQty; // Replace qty with your qty

    $ItemsId[] = ['product' => $ProductId, 'qty' => $ProductQty];
}
这给了我以下结果:

阵列([0]=>阵列([product]=>30143[qty]=>1)[1]=>阵列( [产品]=>30144[数量]=>2)[2]=>Array([产品]=>30145 [qty]=>3][3]=>Array([product]=>30146[qty]=>4][4]=> 数组([产品]=>30147[数量]=>5))

我只想知道为什么会这样:

function create_order_with_custom_products()
{
    $orderGenerator = new OrderGenerator();
    $orderGenerator->setCustomer(6907);

    $orderGenerator->createOrder(array(
        // Add configurable product
        array(
            'product' => 30151,
            'qty' => 1
        ), array(
            'product' => 30150,
            'qty' => 2
        ),
    ));
}
与此不同:

function create_order_with_custom_products()
{
    $orderGenerator = new OrderGenerator();
    $orderGenerator->setCustomer(6907);

    $orderGenerator->createOrder(array($ItemsId));
}
为什么第二种方法不起作用,我的错误在哪里?

最简单的方法是

$ItemsId = []; //declaration
$ItemsId [] = ["product"=>30151,"qty"=>1]; //pusing an array with key 'product' & 'qty' to $ItemsId
更新

这条线

$orderGenerator->createOrder(array($ItemsId));
无法工作,因为
$ItemsId
已经是一个数组,并且您正在将其放入一个新数组中,该数组使用此
数组($ItemsId)
。这看起来像

Array([0] => 
     Array ([0] =>  
            Array(
                 [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                 [1] => Array ( [product] => 30144,[qty] => 2 ) 
                 [2] => Array ( [product] => 30145,[qty] => 3 ) 
                 [3] => Array ( [product] => 30146,[qty] => 4 ) 
                 [3] => Array ( [product] => 30147,[qty] => 5 ) 
            )
      )
)
      Array ([0] =>  
             Array(
                   [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                   [1] => Array ( [product] => 30144,[qty] => 2 ) 
                   [2] => Array ( [product] => 30145,[qty] => 3 ) 
                   [3] => Array ( [product] => 30146,[qty] => 4 ) 
                   [3] => Array ( [product] => 30147,[qty] => 5 ) 
             )
       )
但是预期的数组应该如下所示

Array([0] => 
     Array ([0] =>  
            Array(
                 [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                 [1] => Array ( [product] => 30144,[qty] => 2 ) 
                 [2] => Array ( [product] => 30145,[qty] => 3 ) 
                 [3] => Array ( [product] => 30146,[qty] => 4 ) 
                 [3] => Array ( [product] => 30147,[qty] => 5 ) 
            )
      )
)
      Array ([0] =>  
             Array(
                   [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                   [1] => Array ( [product] => 30144,[qty] => 2 ) 
                   [2] => Array ( [product] => 30145,[qty] => 3 ) 
                   [3] => Array ( [product] => 30146,[qty] => 4 ) 
                   [3] => Array ( [product] => 30147,[qty] => 5 ) 
             )
       )
要克服这个问题,只需改变

$orderGenerator->createOrder(array($ItemsId)); 

最简单的方法是

$ItemsId = []; //declaration
$ItemsId [] = ["product"=>30151,"qty"=>1]; //pusing an array with key 'product' & 'qty' to $ItemsId
更新

这条线

$orderGenerator->createOrder(array($ItemsId));
无法工作,因为
$ItemsId
已经是一个数组,并且您正在将其放入一个新数组中,该数组使用此
数组($ItemsId)
。这看起来像

Array([0] => 
     Array ([0] =>  
            Array(
                 [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                 [1] => Array ( [product] => 30144,[qty] => 2 ) 
                 [2] => Array ( [product] => 30145,[qty] => 3 ) 
                 [3] => Array ( [product] => 30146,[qty] => 4 ) 
                 [3] => Array ( [product] => 30147,[qty] => 5 ) 
            )
      )
)
      Array ([0] =>  
             Array(
                   [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                   [1] => Array ( [product] => 30144,[qty] => 2 ) 
                   [2] => Array ( [product] => 30145,[qty] => 3 ) 
                   [3] => Array ( [product] => 30146,[qty] => 4 ) 
                   [3] => Array ( [product] => 30147,[qty] => 5 ) 
             )
       )
但是预期的数组应该如下所示

Array([0] => 
     Array ([0] =>  
            Array(
                 [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                 [1] => Array ( [product] => 30144,[qty] => 2 ) 
                 [2] => Array ( [product] => 30145,[qty] => 3 ) 
                 [3] => Array ( [product] => 30146,[qty] => 4 ) 
                 [3] => Array ( [product] => 30147,[qty] => 5 ) 
            )
      )
)
      Array ([0] =>  
             Array(
                   [0] =>Array  ( [product] => 30143,[qty] => 1 ) 
                   [1] => Array ( [product] => 30144,[qty] => 2 ) 
                   [2] => Array ( [product] => 30145,[qty] => 3 ) 
                   [3] => Array ( [product] => 30146,[qty] => 4 ) 
                   [3] => Array ( [product] => 30147,[qty] => 5 ) 
             )
       )
要克服这个问题,只需改变

$orderGenerator->createOrder(array($ItemsId)); 


使用确保数组的两个子元素共享相同索引的计数器。像这样:

$i = 0;

foreach(...) {
...
$ItemsId[$i]["product"] = $ProductId;             
$ItemsId[$i]["qty"] = $ProductQty;
...
$i++;
}

使用确保数组的两个子元素共享相同索引的计数器。像这样:

$i = 0;

foreach(...) {
...
$ItemsId[$i]["product"] = $ProductId;             
$ItemsId[$i]["qty"] = $ProductQty;
...
$i++;
}

替换
$ItemsId[][“产品”]=$ProductId$ItemsId[][“数量”]=$ProductQty带有
$ItemsId[]=['product'=>$ProductId,'qty'=>$ProductQty]我已经回答了我的问题,请您检查一下。替换为
$ItemsId[][“product”]=$ProductId$ItemsId[][“数量”]=$ProductQty带有
$ItemsId[]=['product'=>$ProductId,'qty'=>$ProductQty]我已经预测了我的问题,你能检查一下吗?我已经更新了我的问题,你能检查一下吗?我相信你说的是这一行
$orderGenerator->createOrder(array($ItemsId))OrderGenerator()
看起来怎么样?这是:非常感谢你的帮助!你能帮我一下吗?我已经更新了我的问题,你能检查一下吗?我相信你说的是这一行
$orderGenerator->createOrder(array($ItemsId))OrderGenerator()
看起来怎么样?这是:非常感谢你的帮助!你能帮我一下吗?我已经更新了我的问题,你能检查一下吗?你是否在方法中设置了
$ItemsId
?在您的示例中,它不是set。我已经更新了我的问题,您可以检查它吗?您是否在方法中设置了
$ItemsId
?在您的示例中,它没有设置