我一直在尝试替换数组中的值 当我打印它时,我会将这个数组命名为$ 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;
目前这不是很有效的帮助
答案 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;