保存多维数组中的数据

Save data from multidimensional array

我正在尝试将多维数组传递给数据库 table 和列,但我卡在了一个地方,我无法理解如何放置 foreach 函数以获得正确的结果。

下面是我的数据:

数据:

array(5) {
        ["option_id"]=>  int(115)

  ["name"]=>
          array(3) {
            [0]=> string(1) "S"
            [1]=> string(1) "M"
            [2]=> string(1) "L"
          }
  ["value"]=>  array(3) {
            [0]=> string(5) "12345"
            [1]=> string(5) "12346"
            [2]=> string(5) "12347"
        }
  ["price"]=>  array(3) {
            [0]=> string(3) "199"
            [1]=> string(3) "199"
            [2]=> string(3) "199"
        }
  ["inventory"]=>  array(3) {
    [0]=> string(1) "1"
    [1]=> string(1) "1"
    [2]=> string(1) "1"
  }
}

名称、价值、价格、库存中的每个字符串都需要保存在数据库的每一行中

但我的问题是,在创建 foreach 以将数据存储在数据库中时,它只存储所有列的名称。

我用来保存数据的模型是:

function saveBatchOptionsValues($option_values){
        $sequence   = 0;
        foreach($option_values['name'] as $value){

            $values['option_id'] = $option_values['option_id'];
            $values['name'] = $value['name'];
            $values['value'] = $value['value'];
            $values['sequence'] = $sequence;
            $values['inventory']    = $value['inventory'];
            $values['weight']   = floatval(1.00);
            $values['price']        = floatval($value['price']);
            $sequence++;
            $this->db->insert('option_values', $values);
        }

    }

问题是如何将值、价格、库存等列传递给每一行?

感谢任何帮助!

您的问题在于您如何使用 foreach 函数

foreach($option_values['name'] as $value){

您需要执行以下操作:

foreach($option_values as $value){

如果您遍历名称子数组,您只会得到预期的名称。对于获取行,这是您可以迭代数据结构的方式。您必须通过数字索引访问不同行中的不同值,因为它们分布在不同的数组中(而不是使用 foreach 进行迭代):

function saveBatchOptionsValues($option_values){
    $count = count($option_values["name"]);
    for($i = 0; $i < $count; $i++) {
        $values['option_id'] = $option_values['option_id'];
        $values['name'] = $option_values['name'][$i];
        $values['value'] = $option_values['value'][$i];
        $values['sequence'] = $i;
        $values['inventory'] = $option_values['inventory'][$i];
        $values['weight']   = floatval(1.00);
        $values['price'] = floatval($option_values['price'])[$i];
        $this->db->insert('option_values', $values);
    }
}

简要说明

我已经更改了示例以适合您的示例。你有数组的数组吗?在子数组中是相同类型的数据,例如名字。所以所有的名字都存储在同一个数组中。如果你精确地迭代那个子数组会发生什么?在每次迭代中,您检索名称。所以如果你是在第二次迭代中,您检索名称。但现在您还想知道该确切名称/产品的价格。使用 foreach 循环是不可能的,因为使用 foreach 可以迭代 one 数组。所以你真正想做的是同时迭代多个数组。您可以使用增加计数器的 for 循环来实现。使用该计数器,您可以在同一次迭代中访问每个不同的数组(名称、价格等)。我希望它变得更清晰了。