Да, есть более элегантные способы, чтобы получить значение `mode_id` из вашего массива. Вместо выполнения двух вложенных циклов и использования `unset()`, вы можете использовать функцию `array_filter()` или просто один цикл `foreach`.
Вот несколько примеров, как это можно сделать.
### Пример 1: Использование `array_filter()`
```php
$array = [
['tariff_id' => '137', 'mode_id' => 3],
['tariff_id' => '138', 'mode_id' => 4],
];
$del_val = '137'; // переменная
$filtered = array_filter($array, function($item) use ($del_val) {
return $item['tariff_id'] == $del_val;
});
if (!empty($filtered)) {
$data = reset($filtered); // берем первый элемент из отфильтрованного массива
echo $data['mode_id']; // выведет 3
}
```
### Пример 2: Простой `foreach`
```php
$array = [
['tariff_id' => '137', 'mode_id' => 3],
['tariff_id' => '138', 'mode_id' => 4],
];
$del_val = '137'; // переменная
$mode_id = null;
foreach ($array as $item) {
if ($item['tariff_id'] == $del_val) {
$mode_id = $item['mode_id'];
break; // выходим из цикла, как только нашли нужный элемент
}
}
echo $mode_id; // выведет 3
```
### Объяснение
1. **Использование `array_filter()`**: Этот метод позволяет отфильтровать элементы массива по заданному критерию. После фильтрации мы можем извлечь первый элемент и получить значение `mode_id`.
2. **Простой цикл `foreach`**: Этот метод более прямолинейный, просто проходим по массиву и ищем нужный `tariff_id`. Как только найден нужный элемент, мы сохраняем его `mode_id` и выходим из цикла.
Оба способа более лаконичны и удобны по сравнению с вашим первоначальным кодом. Вы можете выбрать тот, который вам больше нравится!