Форумы портала PHP.SU » » Вопросы новичков » Удаление элемента массива по значению

Страниц (1): [1]
 

1. Никорагоа - 07 Сентября, 2012 - 14:40:09 - перейти к сообщению
Всем привет! Как удалить элемент массива по значению(не по индексу)?
Вот код для наглядности
PHP:
скопировать код в буфер обмена
  1.  
  2. $mass = array(71, 55, 63, 12, 33); //массив
  3. $elem_cot_nado_udalit = 63; //элемент который надо удалить
  4.  

Но только есть одно НО: елемента которого надо удалить может и не быть в массиве например так
PHP:
скопировать код в буфер обмена
  1.  
  2. $mass = array(71, 55, 63, 12, 33); //массив
  3. $elem_cot_nado_udalit = 100; //элемент который надо удалить
  4.  

Прошу помогите уже час сижу найти не чего не могу.... и на ум ничего не приходит((((
2. Мелкий - 07 Сентября, 2012 - 14:48:42 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $mass = array(71, 55, 63, 12, 33); //массив
  2. $elem = 635;
  3. $key=array_search($elem, $mass);
  4. if (false !== $key) unset($mass[ $key ]);
  5.  
  6. var_dump($key, $mass);
3. Кирюха - 07 Сентября, 2012 - 22:38:30 - перейти к сообщению
все отлично работает Юольшое спасибо, но вот только как сделать так что бы индексы не нарушались?Т е элемент удаляется вместе с индексом. А надо чтобы индексы шли по порядку
4. snikers987 - 07 Сентября, 2012 - 23:46:38 - перейти к сообщению
Кирюха sort()
5. DelphinPRO - 08 Сентября, 2012 - 08:33:49 - перейти к сообщению
Кирюха
array_values
6. SmileMan7 - 17 Марта, 2017 - 16:08:30 - перейти к сообщению
есть ещё такой способ.

покрывает ситуации, когда элемента может не быть в массиве и пересчитывает индексы.

PHP:
скопировать код в буфер обмена
  1. $first_array = ['one', 'two', 'three'];
  2.  
  3.  
  4. $second_array = array_diff($first_array, ['two']);
  5.  
  6. var_dump($first_array);
  7.  
  8. echo '<br>';
  9.  
  10. var_dump($second_array);



результат:
Спойлер (Отобразить)


если массив с идексами, то они сохраняются.

PHP:
скопировать код в буфер обмена
  1. $first_array = ['a' => 'one', 'b' => 'two', 'c' => 'three'];
  2.  
  3. $second_array = array_diff($first_array, ['two']);
  4.  
  5. var_dump($first_array);
  6.  
  7. echo '<br>';
  8.  
  9. var_dump($second_array);


результат:
Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1