【问题标题】:Add array in exiting array in php在php中的现有数组中添加数组
【发布时间】:2020-03-07 15:15:25
【问题描述】:

我有一个 json。首先我必须解码,然后在 json 的特定键上添加循环。

public function saveRecode() {
    $json ='{"productID":"1","productPrice":"5585.00","productDetails":{"productImage":"https:\/\/development.modeconfigurator.com\/eCommerce\/backdrop.jpg","TABLE TOP":"COPPER DISTRESSED","TABLE FRAME":"RAL 5024 PASTEL BLUE"},"_":"1583172411557"}';

    $jsonDecode = json_decode($json, true);
    foreach ($jsonDecode["productDetails"] as $key => $value) {
        $options = [
            '0' => [
                'sort_order' => '1',
                'title' => $key,
                'price_type' => 'fixed',
                'price' => '',
                'type' => 'drop_down',
                'is_require' => '0',
                'values' => [
                    '0' =>[
                        'title' => $value,
                        'price' => '',
                        'price_type' => 'fixed',
                        'sku' => '',
                        'sort_order' => '0',
                        'is_delete' => '0',
                        ]
                    ]
                ]
            ];
    }
    foreach ($options as $arrayOption) {
        $this->_logger->debug("enter in opt ");
        $this->_logger->info(print_r($arrayOption,true));
        $option = $this->_options
            ->setProductId($_product->getId())
            ->setStoreId($_product->getStoreId())
            ->addData($arrayOption);
        $option->save();
        $_product->addOption($option);
    }
}

在数据库中仅最后一次重新编码保存。但我想保存所有参数请循环。

【问题讨论】:

  • 好的,但只有一个重新编码保存在数据库中
  • 每次循环都覆盖$options,而不是附加到它。
  • 那请问怎么追加?
  • 您可以使用$options[] = $itemarray_push($options, $item) 将新项目附加到您的数组中。见这里:php.net/manual/de/function.array-push.php

标签: php arrays save add recode


【解决方案1】:

您每次都在循环中替换$options,而不是向其中添加新元素。应该是:

$options = [];
foreach ($jsonDecode["productDetails"] as $key => $value) {
    $options[] = [
        'sort_order' => '1',
        'title' => $key,
        'price_type' => 'fixed',
        'price' => '',
        'type' => 'drop_down',
        'is_require' => '0',
        'values' => [
            '0' =>[
                'title' => $value,
                'price' => '',
                'price_type' => 'fixed',
                'sku' => '',
                'sort_order' => '0',
                'is_delete' => '0',
            ]
        ]
    ];
}

【讨论】:

  • 我已经实施了您的解决方案,现在只有 1 个键(“productImage”)保存所有三个值。循环截图ibb.co/Y0LdWGq
  • 你只是循环了$jsonDecode['productDetails'],你为什么要保存其他任何东西?
  • 每个键值意味着三个重新编码应该保存。看截图我需要这个ibb.co/Qf6C0JW
  • 你在哪里设置$_product
  • 我不知道你的addData()addOption() 方法是如何工作的,所以我不能确定你是否正确地构造了$options 元素。但我不明白为什么我的代码将它们全部作为同一个选项的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多