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)