Задать вопрос
@nata32

Как вытащить значение из массива?

Добрый день, есть массив, к примеру
МАССИВ
Array
(
    [2] => Array
        (
            [sort_order] => 1
            [tariff_id] => 136
            [mode_id] => 4
        )

    [3] => Array
        (
            [sort_order] => 2
            [tariff_id] => 137
            [mode_id] => 3
        )

    [4] => Array
        (
            [sort_order] => 3
            [tariff_id] => 368
            [mode_id] => 6
        )

    [5] => Array
        (
            [sort_order] => 4
            [tariff_id] => 234
            [mode_id] => 4
        )

    [6] => Array
        (
            [sort_order] => 5
            [tariff_id] => 378
            [mode_id] => 6
        )

)

есть переменная, к примеру равна 137, эта переменная равна в массиве tariff_id, нужно получить из массива mode_id, то есть в данном случае 3.
Сейчас делаю так
$array // массив
         $del_val = '137'; // переменная
         foreach ($array as $key=>$arr) {
            if ($arr['tariff_id']!=$del_val) unset($array[$key]);

}
$data = array();
foreach($array as $key => $value) {
    foreach($value as $key1 => $value1) {
        $data[$key1] = $value1;
    }
}
echo $data['mode_id']);

все работает, но как то не особо нравится, может есть способ так сказать покрасивее ?
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
$array = [...];
$del_val = '137';

// В современном PHP
$data = array_filter($array, fn (array $item): bool => $item['tariff_id'] == $del_val);

// Если у вас старая версия
$data = array_filter($array, function (array $item) use ($del_val): bool {
    return $item['tariff_id'] == $del_val;
});

$item = end($data);
echo $item['mode_id'];

// Но можно и вашу версию доработать
$data = null;
foreach ($array as $arr) {
    if ($arr['tariff_id'] == $del_val) {
        $data = $arr;
    }
}

echo $data ? $data['mode_id'] : 'not found';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы