удалить подмассив с помощью php

У меня есть следующая функция, и ее цель - отфильтровать в дереве массива те элементы, которые не соответствуют индексу поиска, и исключить тему. Я могу заставить эту функцию принести желаемые результаты.

public function negativeKeywordsFilter($products, $negative_keywords){
  $nk=explode(',',$negative_keywords);
  foreach ($products['productItems'] as $product){
    foreach ($product as $item){
        foreach ($nk as $word){
        if (stripos($item['name'],$word) !== false){
        unset($item);                       
    }

  }
}

}
 return $products;
}

Мой массив выглядит следующим образом:

array(
    'page' => '1',
    'items' => '234',
    'items' => array(
        'item' => array(
            0 => array(
                'name' => 'second', 
                'description' => 'some description'
            )
        )
    )
)
)

Если имя совпадает с описанием, то значение должно быть отключено.


person lgt    schedule 31.05.2012    source источник
comment
Не могли бы вы также привести примеры ожидаемых входных и выходных данных?   -  person Wiseguy    schedule 31.05.2012
comment
@lgt действительно так выглядит ваш массив? дубликаты ключей? Действительно?   -  person Sampson    schedule 31.05.2012
comment
Я собираюсь разместить здесь свой вывод   -  person lgt    schedule 31.05.2012
comment
Вы знаете, каждый день я узнаю что-то новое   -  person lgt    schedule 31.05.2012


Ответы (1)


проблема в том, что вы только сбрасываете переменную, которая имеет копию значения, вам нужно сбросить соответствующий элемент в массиве.

public function negativeKeywordsFilter($products, $negative_keywords){
  $nk=explode(',',$negative_keywords);
  foreach ($products['productItems'] as $key1 => $product){
    foreach ($product as $key2 => $item){
        foreach ($nk as $word){
        if (stripos($item['name'],$word) !== false){
        unset($products['productItems'][$key1][$key2]);                       
    }

  }
}

}
 return $products;
}
person goat    schedule 31.05.2012