#php #arrays #multidimensional-array
#php #массивы #многомерный массив
Вопрос:
Задача, которую нужно выполнить, — показать цену почтовых расходов за кг. Итак, начиная с 1 кг, я хочу увеличить на 0,50 для каждого кг.
Я попытался сделать это так, что, похоже, у меня не работает:
$shipping_second_class = array (
array ('weight' => range(1,5), 'cost' => range(1,3, 0.50))
);
foreach ($shipping_second_class as $shipping_second_class) {
echo('weight '.$shipping_second_class['weight'].' costs amp;pound;'.$shipping_second_class['cost'].'<br/>');
}
Похоже, это не работает. То, что я пытаюсь сделать так, чтобы его было проще поддерживать, примерно так, но с меньшим количеством кода:
$shipping_second_class = array (
array ('weight' => '1', 'cost' => '1'),
array ('weight' => '2', 'cost' => '1.5'),
array ('weight' => '3', 'cost' => '2'),
array ('weight' => '4', 'cost' => '2.5'),
array ('weight' => '5', 'cost' => '3'),
);
foreach ($shipping_second_class as $shipping_second_class) {
echo('weight '.$shipping_second_class['weight'].' costs amp;pound;'.$shipping_second_class['cost'].'<br/>');
}
Ответ №1:
Другой простой способ
$per_kg_extra_cost = 0.5;
foreach (range(0, 4) as $shipping) {
$cost = 1 ( $shipping * $per_kg_extra_cost );
$weight = $shipping;
echo '<pre>';
echo 'Weight: '. $weight . ' cost : ' .$cost;
}
Ответ №2:
Вот один из способов сделать это:
$shipping_second_class = array (
array ('weight' => 1, 'cost' => 1)
);
for($x = 2; $x < 6; $x ){
$newdata = ['weight' => $x, 'cost' => 0.5 $x * 0.5];
array_push($shipping_second_class, $newdata);
}
foreach ($shipping_second_class as $s) {
echo('weight '.$s['weight'].' costs amp;pound;'.$s['cost'].'<br/>');
}
По сути, вам нужно добавить в массив после его вызова, а не инициализировать его полностью заполненным. Вы начинаете с массива со значением 1 (вы можете изменить этот код, чтобы начать с пустого массива), и оттуда он расширяется. Если вам нужно добавить больше к массиву, просто увеличьте 6 до (Desired Number) 1
в цикле for .
Я не уверен, есть ли способ добавить в массив так, как вы делаете в первом блоке кода.
Комментарии:
1. Просто примечание, это не идеальный способ его написания, я бы посоветовал улучшить его, чтобы он соответствовал вашему использованию.
Ответ №3:
Вот простой способ сделать это:
$key = -1;
$interval = 0.5;
$shipping_second_class = array_map(function($v) use (amp;$key,$interval) {
$key ;
return ["weight"=>$v,"cost"=>(1 ($interval * $key))];
},range(1,5));
echo json_encode($shipping_second_class);
Вы можете изменить переменную $interval, если вам нужно изменить способ увеличения стоимости