Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 替换数组nvp中的值_Php - Fatal编程技术网

Php 替换数组nvp中的值

Php 替换数组nvp中的值,php,Php,我一直在尝试替换数组中的值 打印此数组时,我会将其命名为$currences Array ( [0] => Array ( [currencylabel] => USA, Dollars [currencycode] => USD [currencysymbol] => $ [curid] => 1 [curname] => curname1 [check_

我一直在尝试替换数组中的值 打印此数组时,我会将其命名为$currences

Array
(
[0] => Array
    (
        [currencylabel] => USA, Dollars
        [currencycode] => USD
        [currencysymbol] => $
        [curid] => 1
        [curname] => curname1
        [check_value] => 
        [curvalue] => 0
        [conversionrate] => 1
        [is_basecurrency] => 1
    )

[1] => Array
    (
        [currencylabel] => India, Rupees
        [currencycode] => INR
        [currencysymbol] => ₨
        [curid] => 2
        [curname] => curname2
        [check_value] => 
        [curvalue] => 0
        [conversionrate] => 50
        [is_basecurrency] => 
    )

[2] => Array
    (
        [currencylabel] => Zimbabwe Dollars
        [currencycode] => ZWD
        [currencysymbol] => Z$
        [curid] => 3
        [curname] => curname3
        [check_value] => 
        [curvalue] => 0
        [conversionrate] => 22
        [is_basecurrency] => 
    )
)

这里我有一个$conversionRate,我需要将数组$currences[0]->array->[conversionRate]中的值除以它,并将其替换到数组中的相同位置。 对于[1]->Array->[conversionrate]等,也进行相同的操作。。 我目前的做法如下

$conversionRate = 50;
    foreach ($currencies as $key => $val) {
        $key['conversionrate'] = $key['conversionrate'] / $conversionRate;
        if($key['conversionrate'] == 1) {
            $key['is_basecurrency'] = 1;
        }  else {
            $key['is_basecurrency'] = '';
        }
    }
    print_r($key);
    die;

目前这不起作用,请帮助

$key是数组的索引标识符,$val包含数组值

所以像这样使用

$conversionRate = 4;
    foreach ($currencies as $key => $val) {
        $val['conversionrate'] = $val['conversionrate'] / $conversionRate;
        if($val['conversionrate'] == 1) {
            $val['is_basecurrency'] = 1;
        }  else {
            $val['is_basecurrency'] = '';
        }
    }
    print_r($val);
    die;

您的循环完全错误,没有$key['conversionrate',],它是$val['conversionrate']。实际上,似乎没有理由使用$key变量,您可以使用

foreach ($currencies as &$val)

另外,您可能希望打印r($Currences),而不是$key

如果不将浮点数字与==to 1进行比较,则可能由于舍入错误而无法工作

您混淆了键和值,需要使用&$val才能更改数组

$conversionRate = 4;
foreach ($currencies as $key => &$val) {
    if($val['conversionrate'] == $conversionRate) {
        $val['is_basecurrency'] = 1;
    }  else {
        $val['is_basecurrency'] = '';
    }
    $val['conversionrate'] = $val['conversionrate'] / $conversionRate;
}
unset($val);
print_r($currencies);
die;

它是在第一个行中的FEACH循环中出现错误时…为什么它被标记为“代码> java、C++、c<代码>?需要是一个大的词,也可以做$货币[$KE]不,它给了我最后一套值[CurrnyLabel] = >津巴布韦元[CurrnyYCOD] = > ZWD[CurryCyMys]=Z$[CurID]=>3[curname]=>curname3[check\u value]=>0[conversionrate]=>22[is\u basecurrency]=>其余数组元素已关闭..我无法得到您想要的结果。津巴布韦元是你的基础货币吗?您是否将
&
添加到了
foreach($key=>&$val的货币)
?谢谢Adder,这就是我要找的。