Php 无法修改函数内的数组

Php 无法修改函数内的数组,php,arrays,pass-by-reference,pass-by-value,Php,Arrays,Pass By Reference,Pass By Value,我正在尝试更改产品数组的这些元素,具体取决于数组中另一个元素的值。似乎没有发生的是他们没有改变。。。所有内容始终保持为'no'值。我知道'attribute'值以正确的方式不同,并且由于我在日志中编写的测试,函数正确地通过了开关案例 调用我的函数后,我正在打印产品数组,它没有更改。我原以为它可以通过引用传递,但没有。。。我还尝试以正常方式传递数组并从函数返回它-再次失败 我做错了什么或做得不够 哦,是的,我还试着用以下方法安装了开关盒: protected function _changeArr

我正在尝试更改
产品
数组的这些元素,具体取决于数组中另一个元素的值。似乎没有发生的是他们没有改变。。。所有内容始终保持为
'no'
值。我知道
'attribute'
值以正确的方式不同,并且由于我在
日志中编写的测试,函数正确地通过了
开关案例

调用我的函数后,我正在打印
产品
数组,它没有更改。我原以为它可以通过引用传递,但没有。。。我还尝试以正常方式传递数组并从函数返回它-再次失败

我做错了什么或做得不够

哦,是的,我还试着用以下方法安装了
开关盒

protected function _changeArray(&$Products)
    {
        foreach($Products as $item)
        {
            Mage::log('Type: '.$item['attribute']);

            switch($item['shipping_attribute'])
            {
                case '0':
                    $item['is_cargo'] = 'no';
                    $item['is_bulky'] = 'no';
                    $item['is_firework'] = 'no';
                    Mage::log('assigned '.$item['attribute']);
                    break;
                case '1':
                    $item['is_cargo'] = 'yes';
                    $item['is_bulky'] = 'no';
                    $item['is_firework'] = 'no';
                    Mage::log('assigned '.$item['attribute']);
                    break;
                case '2':
                    $item['is_cargo'] = 'no';
                    $item['is_bulky'] = 'yes';
                    $item['is_firework'] = 'no';
                    Mage::log('assigned '.$item['attribute']);
                    break;
                case '3':
                    $item['is_cargo'] = 'no';
                    $item['is_bulky'] = 'no';
                    $item['is_firework'] = 'yes';
                    Mage::log('assigned '.$item['attribute']);
                    break;
            }
            Mage::log('"switch" finished!');
        }
    }

再次否定…

除了读取输入数组之外,您实际上没有对输入数组执行任何操作

您需要更改输入数组,而不是$item数组,$item只是一个提取的项

所以基本上:

使用:

并改为:

 foreach($Products as $key => $item)
理想情况下,不通过引用使用函数,而是将输出数组从函数返回到脚本

增加:

我会这样运行它:

$Products[$key]['is_cargo'] = 'no';
并在函数末尾返回$products

电话:


$data=\u changeArray($data)

除了读取输入数组之外,您实际上不会对输入数组执行任何操作

您需要更改输入数组,而不是$item数组,$item只是一个提取的项

所以基本上:

使用:

并改为:

 foreach($Products as $key => $item)
理想情况下,不通过引用使用函数,而是将输出数组从函数返回到脚本

增加:

我会这样运行它:

$Products[$key]['is_cargo'] = 'no';
并在函数末尾返回$products

电话:


$data=\u changeArray($data)

除了读取输入数组之外,您实际上不会对输入数组执行任何操作

您需要更改输入数组,而不是$item数组,$item只是一个提取的项

所以基本上:

使用:

并改为:

 foreach($Products as $key => $item)
理想情况下,不通过引用使用函数,而是将输出数组从函数返回到脚本

增加:

我会这样运行它:

$Products[$key]['is_cargo'] = 'no';
并在函数末尾返回$products

电话:


$data=\u changeArray($data)

除了读取输入数组之外,您实际上不会对输入数组执行任何操作

您需要更改输入数组,而不是$item数组,$item只是一个提取的项

所以基本上:

使用:

并改为:

 foreach($Products as $key => $item)
理想情况下,不通过引用使用函数,而是将输出数组从函数返回到脚本

增加:

我会这样运行它:

$Products[$key]['is_cargo'] = 'no';
并在函数末尾返回$products

电话:

$data=\u changeArray($data)

您需要在
foreach
循环中设置$item“by reference”

protected function _changeArray($Products)
{
    foreach($Products as $key => $product)
    {
        Mage::log('Type: '.$Products[$key]['attribute']);

        switch($Products[$key]['shipping_attribute'])
        {

            case '0':
                $Products[$key]['is_cargo'] = 'no';
                $Products[$key]['is_bulky'] = 'no';
                $Products[$key]['is_firework'] = 'no';
                break;
//etc
您需要在
foreach
循环中设置$item“by reference”

protected function _changeArray($Products)
{
    foreach($Products as $key => $product)
    {
        Mage::log('Type: '.$Products[$key]['attribute']);

        switch($Products[$key]['shipping_attribute'])
        {

            case '0':
                $Products[$key]['is_cargo'] = 'no';
                $Products[$key]['is_bulky'] = 'no';
                $Products[$key]['is_firework'] = 'no';
                break;
//etc
您需要在
foreach
循环中设置$item“by reference”

protected function _changeArray($Products)
{
    foreach($Products as $key => $product)
    {
        Mage::log('Type: '.$Products[$key]['attribute']);

        switch($Products[$key]['shipping_attribute'])
        {

            case '0':
                $Products[$key]['is_cargo'] = 'no';
                $Products[$key]['is_bulky'] = 'no';
                $Products[$key]['is_firework'] = 'no';
                break;
//etc
您需要在
foreach
循环中设置$item“by reference”

protected function _changeArray($Products)
{
    foreach($Products as $key => $product)
    {
        Mage::log('Type: '.$Products[$key]['attribute']);

        switch($Products[$key]['shipping_attribute'])
        {

            case '0':
                $Products[$key]['is_cargo'] = 'no';
                $Products[$key]['is_bulky'] = 'no';
                $Products[$key]['is_firework'] = 'no';
                break;
//etc
foreach($Products as&$item)
foreach($Products as&$item)
foreach($Products as&$item)
foreach($Products as&$item)