Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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_Magento_Multidimensional Array - Fatal编程技术网

Php 多维数组-通过迭代复制值

Php 多维数组-通过迭代复制值,php,arrays,magento,multidimensional-array,Php,Arrays,Magento,Multidimensional Array,我已经开始与Magento合作,我正在尝试获取与给定产品相关的所有自定义选项。 我已经找到了解决办法,但是,我遇到了一些问题 我的PHP代码: foreach ($_product->getOptions() as $optionInfo) : $values = $optionInfo->getValues(); foreach ($values as $values) : $valuesArray[$values['option_type_id

我已经开始与Magento合作,我正在尝试获取与给定产品相关的所有自定义选项。 我已经找到了解决办法,但是,我遇到了一些问题

我的PHP代码:

foreach ($_product->getOptions() as $optionInfo) :
    $values = $optionInfo->getValues(); 

    foreach ($values as $values) :
        $valuesArray[$values['option_type_id']] = array("option_type_id" => $values['option_type_id'], "option_id" => $values['option_id'], "title" => $values['title']);
    endforeach;

    $option = array("id" => $optionInfo->getId(), "type" => $optionInfo->getType(), "title" => $optionInfo->getTitle(), "values" => $valuesArray);
    $options[$optionInfo->getId()]= $option;
endforeach;
它确实返回了正确的信息。至少在第一次迭代中:

[2] => Array
    (
        [id] => 2
        [type] => drop_down
        [title] => Custom option 1
        [values] => Array
            (
                [4] => Array
                    (
                        [option_type_id] => 4
                        [option_id] => 2
                        [title] => Flaphack 1
                    )

                [5] => Array
                    (
                        [option_type_id] => 5
                        [option_id] => 2
                        [title] => Flaphack 2
                    )

                [6] => Array
                    (
                        [option_type_id] => 6
                        [option_id] => 2
                        [title] => Flaphack 3
                    )

            )

    )
[1] => Array
    (
        [id] => 1
        [type] => drop_down
        [title] => Custom option 2
        [values] => Array
            (
                [4] => Array
                    (
                        [option_type_id] => 4
                        [option_id] => 2
                        [title] => Flaphack 1
                    )

                [5] => Array
                    (
                        [option_type_id] => 5
                        [option_id] => 2
                        [title] => Flaphack 2
                    )

                [6] => Array
                    (
                        [option_type_id] => 6
                        [option_id] => 2
                        [title] => Flaphack 3
                    )

                [1] => Array
                    (
                        [option_type_id] => 1
                        [option_id] => 1
                        [title] => Flaphack 1.1
                    )

                [2] => Array
                    (
                        [option_type_id] => 2
                        [option_id] => 1
                        [title] => Flaphack 1.2
                    )

                [3] => Array
                    (
                        [option_type_id] => 3
                        [option_id] => 1
                        [title] => Flaphack 1.3
                    )

            )

    )
然而,在第二次迭代期间(甚至可能是第三次和第四次迭代等等),我有重复的值。在第二次迭代中,我得到了与第一次迭代相同的值,加上第二次迭代的正确值:

[2] => Array
    (
        [id] => 2
        [type] => drop_down
        [title] => Custom option 1
        [values] => Array
            (
                [4] => Array
                    (
                        [option_type_id] => 4
                        [option_id] => 2
                        [title] => Flaphack 1
                    )

                [5] => Array
                    (
                        [option_type_id] => 5
                        [option_id] => 2
                        [title] => Flaphack 2
                    )

                [6] => Array
                    (
                        [option_type_id] => 6
                        [option_id] => 2
                        [title] => Flaphack 3
                    )

            )

    )
[1] => Array
    (
        [id] => 1
        [type] => drop_down
        [title] => Custom option 2
        [values] => Array
            (
                [4] => Array
                    (
                        [option_type_id] => 4
                        [option_id] => 2
                        [title] => Flaphack 1
                    )

                [5] => Array
                    (
                        [option_type_id] => 5
                        [option_id] => 2
                        [title] => Flaphack 2
                    )

                [6] => Array
                    (
                        [option_type_id] => 6
                        [option_id] => 2
                        [title] => Flaphack 3
                    )

                [1] => Array
                    (
                        [option_type_id] => 1
                        [option_id] => 1
                        [title] => Flaphack 1.1
                    )

                [2] => Array
                    (
                        [option_type_id] => 2
                        [option_id] => 1
                        [title] => Flaphack 1.2
                    )

                [3] => Array
                    (
                        [option_type_id] => 3
                        [option_id] => 1
                        [title] => Flaphack 1.3
                    )

            )

    )
你们知道发生了什么事吗?将非常感激

最好的, Nikolaj

试试这个代码

foreach ($_product->getOptions() as $optionInfo) :
$values = $optionInfo->getValues(); 
$valuesArray = array(); // added line
foreach ($values as $values) :
    $valuesArray[$values['option_type_id']] = array("option_type_id" => $values['option_type_id'], "option_id" => $values['option_id'], "title" => $values['title']);
endforeach;

$option = array("id" => $optionInfo->getId(), "type" => $optionInfo->getType(), "title" =>    $optionInfo->getTitle(), "values" => $valuesArray);
$options[$optionInfo->getId()]= $option;
endforeach;
$valuesArray
在每次迭代中都会获取值,而您从未清除它。因此,当外部
foreach
进入第二个循环时,
$valuesArray
以增量方式获取值。如果在每次外部
foreach
迭代中清除
$valuesArray
,您将得到您想要的。

尝试此代码

foreach ($_product->getOptions() as $optionInfo) :
$values = $optionInfo->getValues(); 
$valuesArray = array(); // added line
foreach ($values as $values) :
    $valuesArray[$values['option_type_id']] = array("option_type_id" => $values['option_type_id'], "option_id" => $values['option_id'], "title" => $values['title']);
endforeach;

$option = array("id" => $optionInfo->getId(), "type" => $optionInfo->getType(), "title" =>    $optionInfo->getTitle(), "values" => $valuesArray);
$options[$optionInfo->getId()]= $option;
endforeach;

$valuesArray
在每次迭代中都会获取值,而您从未清除它。因此,当外部
foreach
进入第二个循环时,
$valuesArray
以增量方式获取值。如果您在每次外部
foreach
迭代中清除
$valuesArray
,您将得到您想要的。

首先,谢谢。成功了。第二:你能给我解释一下为什么在foreach排序之前,$values的degration是一个数组吗?啊,我明白了。干杯,巴德。不幸的是,我现在还不能这么做。为了做到这一点,需要更多的声誉:-/首先,谢谢。成功了。第二:你能给我解释一下为什么在foreach排序之前,$values的degration是一个数组吗?啊,我明白了。干杯,巴德。不幸的是,我现在还不能这么做。为了做到这一点,需要更多的声誉:-/