2013-05-14 4 views
0

Я пытаюсь заменить значения в массиве Я назову этот массив как $ currencies, когда я его напечатаю.Замена значений в массиве 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] -> 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; 

В настоящее время это не работает, пожалуйста, помогите

+0

Что не работает? – 2013-05-14 07:51:46

+0

он бросает ошибку, когда get находится внутри цикла foreach на самой первой строке. – Syed

+0

Почему он помечен 'java, C++, c'? –

ответ

0

$ ключ является индекс identofoer массива и $ Вэл содержат массив значения

так использовать как этих

$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

Хорошо Спасибо, ответ Аддера был прав на деньги .. Спасибо всем .... – Syed

+0

Не забудьте проверить правильный ответ на свой вопрос. – Adder

1

Ваших петли вся соната ng, нет ключа $ ['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

+0

Нет, он дает мне только конечный набор значений [currencylabel] => Зимбабве Доллары [CurrencyCode] => ZWD [CURRENCYSYMBOL] = > Z $ [curid] => 3 [CurName] => curname3 [check_value] => [curvalue] => 0 [ConversionRate] => 22 [is_basecurrency] => остальной части элементов массива были выключены .. – Syed

+0

В результате я не получаю то, что вы хотите. Доллары Зимбабве - это ваша базовая валюта? Вы добавили '&' in 'foreach ($ currencies as $ key => & $ val)'? – Adder

Смежные вопросы