2013-05-14 51 views
0

我一直在嘗試替換數組中的值 我將這個數組命名爲$貨幣,當我打印它時,它看起來像。替換數組中的值nvp

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到我需要劃分存在於陣列$貨幣的值[0] - >陣列 - > [conversionrate]和在相同的地方替換在陣列中。 和[1]相同的操作 - >陣列 - > [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; 

目前,這是行不通的好心幫

+0

什麼不起作用? – 2013-05-14 07:51:46

+0

當它在第一行的foreach循環裏面時,它會拋出一個錯誤.. – Syed 2013-05-14 07:53:45

+0

爲什麼它被標記爲'java,C++,c'? – 2013-05-14 07:53:59

回答

0

$關鍵是一個數組的索引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; 
+0

非常感謝Adder的答案是正確的錢.. 謝謝大家.... – Syed 2013-05-14 08:12:05

+0

不要忘了檢查你的問題的正確答案。 – Adder 2013-05-14 08:17:05

1

你的循環是所有WRO ng,沒有$ key ['conversionrate'],它是$ val ['conversionrate']。事實上,有不似乎是爲$關鍵變量有原因的,你可以通過陣列

foreach ($currencies as &$val) 

而且只是循環,你可能想的print_r($貨幣),而不是$關鍵

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; 
+0

需要是一個大字,也可以做$貨幣[$ key] – MKroeders 2013-05-14 07:58:46

+0

不,它給我的只是最後一組值 [currencylabel] =>津巴布韋美元 [currencycode] => ZWD [currencysymbol] = > Z $ [curid] => 3 [curname] => curname3 [check_value] => [curvalue] => 0 [conversionrate] => 22 [is_basecurrency] => 其餘部分的數組元素的已經關閉了。 – Syed 2013-05-14 08:03:26

+0

然後我不明白你想要什麼。津巴布韋美元是你的基礎貨幣?您是否在'foreach($ currency as $ key =>&$ val)''中添加了'&'? – Adder 2013-05-14 08:06:10