#php #arrays
#php #массивы
Вопрос:
У меня есть этот массив, который необходимо преобразовать или перекомпозировать, чтобы сформировать новый массив.
Исходный массив выглядит следующим образом
Array
(
[0] => Array
(
[amount] => 1439.53
[c_year] => 2021
[c_month] => 9
[short_month] => Sep
)
[1] => Array
(
[amount] => 1448.13
[c_year] => 2021
[c_month] => 10
[short_month] => Oct
)
)
Примечание: месяц = [c_month].’-‘.[c_year]
Мне нужно, чтобы он выглядел как приведенный ниже массив
Array
(
[0] => Array
(
[month] => Sept-9
[amount] => 1439.53
)
[1] => Array
(
[month] => Oct-9
[amount] => 1448.13
)
)
Я попробовал несколько циклов, но, похоже, не смог преобразовать или перекомпонировать его.
Мои усилия перечислены ниже.
```
foreach ($resultsArray as $key=>$value) {
$monthsFees = array('month'=>$value['c_year'].'-'.$value['c_month']);array('amount'=>$value['amount']);
}
```
Результат:
Array
(
[month] => 2021-10
)
```
foreach ($resultsArray as $key=>$value) {
array_push($monthsFees,'amount',$value['amount'],'month' ,$value['short_month'].'-'.$value['c_year']);
}
```
Результат:
Array
(
[0] => amount
[1] => 1439.53
[2] => month
[3] => Sep-2021
[4] => amount
[5] => 1448.13
[6] => month
[7] => Oct-2021
)
```
$feesLast6MonthsArray['month']= $value['c_year'].'-'.$value['c_month'];
$feesLast6MonthsArray['amount']=$value['amount'];
}
```
Результат:
Array
(
[month] => 2021-10
[amount] => 1448.13
)
Комментарии:
1. Откуда
9
беретсяOct-9
и что случилось с годами?2. Кроме того, с
var_dump()
/ output очень сложно работатьprint_r()
. Не могли бы вы предоставить массивы как фактические (с хорошим отступом) структуры данных PHP3. Каждый пример желаемого результата выглядит по-разному. Не могли бы вы потратить некоторое время, чтобы уточнить свои требования
4. Я добавил все, что мог. Пожалуйста, дайте время для исправления, прежде чем отмечать это:-(
Ответ №1:
Вы можете использовать array_map() для преобразования массива в то, что вы хотите
$monthsFees = array_map(function($fee) {
return [
"month" => sprintf("%s-%s",
$fee["c_month"],
$fee["c_year"]
), // [c_month].'-'.[c_year]
"amount" => $fee["amount"]
];
}, $resultsArray);
Демонстрация ~ https://3v4l.org/0trIY