Работа с массивом php
Не смог правильно оформить заголовок вопроса, опишу подробно задачу в описании ниже.
Есть выборка с базы данных в виде многомерного массива и записываю его в свойство:
array(4) {
[0]=>
array(2) {
["id"]=>
int(1)
["value"]=>
string(7) "default"
}
[1]=>
array(2) {
["id"]=>
int(2)
["value"]=>
string(3) "min"
}
[2]=>
array(2) {
["id"]=>
int(3)
["value"]=>
string(6) "online"
}
[3]=>
array(2) {
["id"]=>
int(4)
["value"]=>
string(7) "offline"
}
}
Для получения значения с поля value я обращаюсь к номеру элемента массива и потом к полю value, например:
$this->constant[0]['value']
Вопрос:
Как обработать данный массив чтоб обращаться к одному массиву через ID и получать его value? На выходе хочу получать значения в таком виде.
$this->constant[1] и на вывод должен получить строку `default`
Прошу помощи в реализации.
Ответы (3 шт):
Автор решения: Алексей Шиманский
→ Ссылка
$id = 111;
$neededValue = '';
foreach ($array as $item) {
if ($item['id'] === $id) {
$neededValue = $item['value'];
break;
}
}
$id = 111;
$neededValue = array_filter($array, function($item) use ($id) {
return $item['id'] === $id;
})['value'];
Автор решения: fixer
→ Ссылка
$newarray = array();
foreach($this->constant as $item){
$newarray[$item['id']] = $item['value'];
}
Автор решения: Дмитрий Березуцкий
→ Ссылка
$this->constant = array_combine(array_column($this->constant, 'id'), array_column($this->constant, 'value'))
и после обращаешься
$this->constant[id]