Многомерный массив -> в одномерный ключ/значение php

D
На сайте с 28.06.2008
Offline
1104
311

Есть массив получаемый в цикле

foreach($result as $value){
var_dump($value);
}

вида


array(2) {
["year"]=>
string(4) "2012"
["value"]=>
string(4) "210"
}
array(2) {
["year"]=>
string(4) "2012"
["value"]=>
string(4) "150"
}
array(2) {
["year"]=>
string(4) "2012"
["value"]=>
string(4) "100"

Как мне из него сделать массив вида:

array(10) {
[2012]=>
string(5) "210"
[2012]=>
string(5) "150"
[2012]=>
string(5) "100"
}

?

P.S. кол-во массивов получаемых в цикле всегда разное

---------- Добавлено 07.09.2019 в 20:59 ----------

сделал так... ничего что перезаписываются одинаковые года, мне это подходит...

$new_arr = array();
foreach($result as $value){
$new_arr[$value["year"]] = $value["value"];
}
Chkan
На сайте с 22.10.2008
Offline
120
#1

Как то так:


$arrayOne = array(
array('year' => 2018, 'value' => 100,),
array('year' => 2019, 'value' => 200,),
array('year' => 2020, 'value' => 300,),
array('year' => 2021, 'value' => 400,),
);

$arrayTwo = array();

foreach($arrayOne as $value){
$arrayTwo[$value['year']] = $value['value'];
}

var_dump($arrayTwo);
🤠 Разработка/сопровождение проектов на Python/Django (https://django.ws)
IL
На сайте с 20.04.2007
Offline
435
#2

$arrayTwo = array_column($arrayOne, 'value', 'year');
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Prior
На сайте с 03.03.2008
Offline
184
#3
Dram:
ничего что перезаписываются одинаковые года, мне это подходит...

Тогда ожидаемый результат приведён неверный

Dram:


array(10) {
[2012]=>
string(5) "210"
[2012]=>
string(5) "150"
[2012]=>
string(5) "100"
}

Такой результат невозможно получить, т.к. ключи ассоциативного массива не могут повторяться.

Если перезаписывание значений не проблема, то да, приведённый вами код будет работать как и код ivan-lev.

Ответы на вопрос - https://answers.net.pl
IL
На сайте с 20.04.2007
Offline
435
#4
Prior:
код будет работать как и код ivan-lev.

Привёл, имхо, более лаконичный (и, по идее, более быстрый,..) вариант аналогичный коду из поста выше..

Prior:
Такой результат невозможно получить, т.к. ключи ассоциативного массива не могут повторяться.

Но, к примеру, так бывает.. 😂 =)

    print_r($arrayOne);


Array
(
[0] => Array
(
[year] => 2018
[value] => 100
)

[1] => Array
(
[year] => 2018
[value] => 100
)

[2] => Array
(
[year] => 2019
[value] => 200
)
)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий