PHP数组-如何在数组中使用多个变量

PHP数组-如何在数组中使用多个变量,php,arrays,magento,multidimensional-array,Php,Arrays,Magento,Multidimensional Array,我有一个Magento的产品导入代码,用于将库存(数量)分配到仓库位置(库存id)。信息在数组中传递,但是我对数组的工作知识并不是那么快,所以我确信我没有正确地执行此操作 导入目前是这样做的,但我相信这不是最有效的,因为我保存了两次产品 这将为位置1(库存id 1)分配100个数量,保存产品,然后为位置2(库存id 2)分配200个数量,然后再次保存产品 $stocksData = $product->getStocksData(); if (!$stockData) {

我有一个Magento的产品导入代码,用于将库存(数量)分配到仓库位置(库存id)。信息在数组中传递,但是我对数组的工作知识并不是那么快,所以我确信我没有正确地执行此操作

导入目前是这样做的,但我相信这不是最有效的,因为我保存了两次产品

这将为位置1(库存id 1)分配100个数量,保存产品,然后为位置2(库存id 2)分配200个数量,然后再次保存产品

 $stocksData = $product->getStocksData();
        if (!$stockData) {
            $stockData = array();
        }
        $stockData['stock_id'] = 1;
        $stockData['qty'] = 100; 
        $stocksData[$stockId] = $stockData;
        $product->setStocksData($stocksData);

        $product->setCreatedAt(strtotime('now'));
        try {
            $product->save();
            echo "Successful";
        }
        catch (Exception $ex) {
            echo 'There was an error :<br/>' .$ex;
        }

     $stocksData = $product->getStocksData();
            if (!$stockData) {
                $stockData = array();
            }
            $stockData['stock_id'] = 2;
            $stockData['qty'] = 200; 
            $stocksData[$stockId] = $stockData;
            $product->setStocksData($stocksData);


$product->setCreatedAt(strtotime('now'));
try {
    $product->save();
    echo "Successful";
}
catch (Exception $ex) {
    echo 'There was an error :<br/>' .$ex;
}

我假设可以在一个数组中包含所有这些信息,但我不确定如何使用。

在php中有很多方法可以初始化数组

$stocksData = array(
  'key' => 'value',
  'myarr' => array(
    'nested' => 'array',
    1,
  ),
  'id_copy' => $stocksData['id'],
  'qty' => $stocksData['stock_id'] == 1 ? 100 : 200,
);
有关数组语法的完整解释,请查看php的。还要注意我对的用法。您可以使用以下语法:

if ($stocksData['id'] == 1) {
  $stocksData['qty'] = 100;
}
else {
  $stocksData['qty'] = 200;
}
编辑:

有关组合请求的特定用例,请查看以下内容:

$stocksData = $product->getStocksData();
$stocksData[1] = array(
  'stock_id' => 1,
  'qty' => 100,
);
$stocksData[2] = array(
  'stock_id' => 2,
  'qty' => 200,
);
$product->setStocksData($stocksData);

谢谢你,但是我不太明白你的答案。它们是两个独立的解决方案还是一起工作。在第二个例子中,假设我有4个股票id——我最终会得到if,else if,else if,else。在第一个答案中,id_copy从何而来。@James-我只是列出了几种使用数组语法的不同方法。检查我编辑的答案,看看是否适合你。非常感谢!这非常有效。你救了我几个小时的悲痛。
$stocksData = $product->getStocksData();
$stocksData[1] = array(
  'stock_id' => 1,
  'qty' => 100,
);
$stocksData[2] = array(
  'stock_id' => 2,
  'qty' => 200,
);
$product->setStocksData($stocksData);