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

Почему не удаляется первое значение из масива с ключем 0?

почему то тут из первого масcива не удаляется первое значение

$block = array(1,2,3,4,5,6,7,8,9,10,11,12);
$bad_block = array(1,2,3);

foreach ($block as $key => $form) {
if ( array_search($form, $bad_block) ) {
unset($block[$key]);
}
}

 print_r($block);
 print_r($bad_block);



Array block
(
[0] => 1
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
[10] => 11
[11] => 12
)

Array bad_block
(
[0] => 1
[1] => 2
[2] => 3
)
  • Вопрос задан
  • 148 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
VladimirAndreev
@VladimirAndreev
php web dev
потому что 0 == false...
любые функции, которые возвращают ключи массивов, позиции в строках и т.п. нужно проверять так:

if(false !== array_search($form, $bad_block)) {
    // ...
}
Ответ написан
Комментировать
array_search на нулевом индексе возвращает 0, условие не проходит.
используйте array_diff
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
foreach ($block as $key => &$form) {
if ( array_search($form, $bad_block) ) {
unset($form);
}

В документации по циклам все хорошо обьесняется
Ответ написан
Ваш ответ на вопрос

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

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