У меня есть вопрос, и он заключается в следующем.
Моя цель — заменить значения всех фруктов, чтобы увеличить цену на 5%:
// precios originales
$precios = array (
"frutas" => array (
"manzanas" => 15,
"peras" => 5,
"naranjas" => 3,
),
"verduras" => array (
"clave" => 15,
"clave2" => 5,
"clave3" => 3,
)
);
// Los precios de frutas suben 5%
foreach ($precios['frutas'] as $clave => $valor) {
$nuevovalor = $valor*5/100+$valor;
$valor = ceil($nuevovalor);
}
// los precios de las verduras suben un 3%
foreach ($precios['verduras'] as $clave => $valor) {
$nuevovalor = $valor*3/100+$valor;
$valor = ceil($nuevovalor);
}
Моя идея состоит в том, чтобы использовать эту функцию array_replace
, но до сих пор ничего из того, что я сделал, кажется, не работает, чтобы заменить значения новыми ценами, это в случае, если новые цены хорошо разрешены с помощью этой функции, ваша идея будет приветствоваться, приветствую.
Вы очень усложнили. Вместо того, чтобы перебирать его с помощью
foreach
, перебирайте массив с помощью ,for
и вы можете индексировать массив, чтобы манипулировать его данными.С
foreach
вы можете это сделать, но вы должны объявить инкрементную переменную для использования в качестве индекса. Также не используйте имена переменных в качестве индексов, потому что вы не сможете динамически перебирать их:Я предпочитаю изменять массив сам по себе, а не использовать
array_replace
. Однако я оставил вам оба решения. Попробуйте IDEONEКомментарии:
=
это способ присваивания в «традиционном» смысле: то, что справа=
, присваивается тому, что слева; в то время как он=>
работает наоборот и используется в циклах for. с другой стороны, умножение значения на десятичное значение дает вам процент, где 0,05 равно 5%, а 1 равно 100%. при сложении обоих значений у меня получается 105%, что то же самое: увеличение на 5%.Вы можете воспользоваться преимуществами PHP 5.5 и
array_map
использовать лямбду . Код довольно упрощен:Даже вторую часть кода можно упростить еще больше, если у вас кроме фруктов и овощей есть другой тип элемента со своей ценой: