Пожалуйста, рассмотрите этот пример
Array
(
[1] => search engine optimization
[2] => engine optimization
[0] => search engine
)
Я хочу удалить поисковую оптимизацию и поисковик, потому что эти слова уже в самой длинной фразе. Эти слова не жестко запрограммированы, вышеуказанный результат генерируется функцией. Я сделал все возможное, чтобы закодировать его, но не смог решить эту проблему.
EDIT
Это моя попытка, похоже, что люди здесь не доверяют, и они хорошо умеют нажимать кнопку голосования. Мой подход неадекватен, поэтому я не стал делиться этим здесь.
$result = array('search engine', 'search engine optimization', 'engine optimization');
uasort($result, 'string_word_length');
foreach($result as $key=>$phrase) {
if( ($found = array_find($phrase, $result, $key)) != FALSE) {
unset($result[$found]);
}
}
function array_find($needle, $haystack, $skip_key = 0) {
if(!is_array($haystack)) return false;
foreach($haystack as $key=>$value) {
if($skip_key != $key && strpos($value, $needle)!==false) {
echo 'Poped ', $value, ' -- ', $key, ' -- ', $skip_key, '<br />';
return $key;
}
}
return false;
}
function string_word_length($a,$b){
return strlen($b) - strlen($a);
}