Удаление подмассива по ключу.

leosun

Новичок
Удаление подмассива по ключу.

Господа подскажите можно ли без перебора основного массива удалить подмассив по ключу?

Есть массив $mas = array(0 => array(key => 'id_1', value => '1'),
2 => array(key => 'id_2', value => '1')
3 => array(key => 'id_3', value => '1')
4 => array(key => 'id_4', value => '1'))

Вот мне у примеру нужно удалить подмассив с key = id_3, как это проще всего сделать?

-~{}~ 04.04.07 01:26:

Я имею ввиду можно сделать проще чем -

$mas = array(
'bonus_1' => array('key_id' => 'id_1', 'value' => 2),
'bonus_2' => array('key_id' => 'id_2', 'value' => 4),
'bonus_3' => array('key_id' => 'id_3', 'value' => 6),
'bonus_4' => array('key_id' => 'id_4', 'value' => 4),
'bonus_5' => array('key_id' => 'id_5', 'value' => 1)
);

foreach ($mas as $key => $value){
if ($value['key_id'] == 'id_3'){
unset($mas[$key]);
break;
}
}

echo "<pre>";
print_r($mas);
echo "</pre>";

???
 

tashkentchi

Новичок
Твой форыч - то же самое, что и unset($mas['id_3']);

Но у тебя нет $mas['id_3']
 

leosun

Новичок
Автор оригинала: tashkentchi
Твой форыч - то же самое, что и unset($mas['id_3']);

Но у тебя нет $mas['id_3']
Нет мой unset($mas[$key]);, тоже самое что unset($mas['bonus_3']);

Ситуация в том, что я знаю, ключ подмассива 'key_id' => 'id_3', но не знаю, что этот подмассив имеет ключ 'bonus_3',
и узнаю это перебором...
 

tashkentchi

Новичок
Автор оригинала: leosun
Нет мой unset($mas[$key]);, тоже самое что unset($mas['bonus_3']);
И правда. Извиняюсь. Можешь посмотреть в сторону array_walk. Но сомневаюсь, что array_walk поможет сократить код.
 

Alexandre

PHPПенсионер
array_search -- Осуществляет поиск данного значения в массиве и возвращает соответствующий ключ в случае удачи
-~{}~ 04.04.07 13:49:

PHP:
$array = array(0 => 'blue', 1 => 'red', 2 => 0x000000, 3 => 'green', 4 => 'red');

$key = array_search('red', $array);         // $key = 1;
 

tashkentchi

Новичок
Если 'key_id' уникально для элементов $mas, то можно имеет смысл изменить структуру $mas:
PHP:
$mas = array(
    'id_1' => array('bonus_1' => 2),
    'id_2' => array('bonus_2' => 4),
    'id_3' => array('bonus_3' => 6),
    'id_4' => array('bonus_4' => 4),
    'id_5' => array('bonus_5' => 1)
);
Тогда достаточно было бы unset($mas[$key]);
 
Сверху