替换数组nvp中的值

时间:2013-05-14 07:47:51

标签: php

我一直在尝试替换数组中的值 当我打印它时,我会将这个数组命名为$ currency。

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,我需要将数组中的值除以$ currency [0] - >数组 - > [转换]并替换在数组中的相同位置。 和[1]的相同操作 - >数组 - > [转换]等等.. 我目前的方法如下

$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;

目前这不是很有效的帮助

3 个答案:

答案 0 :(得分:1)

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

循环遍历数组
foreach ($currencies as &$val)

此外,您可能想要print_r($ currency),而不是$ key

答案 1 :(得分:1)

不要将==的浮点数与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;

答案 2 :(得分:0)

$ key是数组的索引identofoer,$ 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;