Intereting Posts
PHP preg_replace_callback, замените только 1 обратную ссылку? Поддержание состояния между прогонами | Использование сеанса Сессии CodeIgniter продолжают уничтожаться «Open_basedir ограничение действует», но файл находится в правильном каталоге Как я могу разделить предложение на слова и знаки препинания? Группы проверки достоверности форм Symfony2 без объектов PHP, Объединение массивов с помощью общих ключей Множественный выбор Symfony2 не проверяет Какие замены должны быть выполнены, чтобы обеспечить безопасный URL-адрес базы 64? MD5 строки в ActionScript возвращает неверные результаты, когда какой-то hex является частью строки (т. Е. «Abc \ xBF \ x4E») URL-маршрутизация с помощью codeigniter Как кэшировать ответ api с помощью curl, на основе возвращенного etag? Как проверить / определить возраст сессии с помощью PHP Настройка DomainKeys / DKIM в PHP-SMTP-клиенте Tailing Log File и запись результатов в новый файл

без учета регистра array_unique

Я пытаюсь написать несколько строк кода, чтобы создать уникальную функцию типа без учета регистра. Вот что я до сих пор:

foreach ($topics as $value) { $lvalue = strtolower($value); $uvalue = strtolower($value); if (in_array($value, $topics) == FALSE || in_array($lvalue, $topics) == FALSE || in_array($uvalue, $topics) == FALSE) { array_push($utopics, $value); } } 

Проблема заключается в утверждении if. Я думаю, что что-то не так с моим синтаксисом, но я относительно новичок в PHP, и я не уверен, что это такое. Любая помощь?

 function array_iunique($array) { return array_intersect_key( $array, array_unique(array_map("StrToLower",$array)) ); } 

Вы устанавливаете как lvalue и uvalue в нижнюю версию.

  $uvalue = strtolower($value); 

должно быть

  $uvalue = strtoupper($value); 

Тем не менее, это может быть немного быстрее. Производительность вашей функции будет ухудшаться экспоненциально, в то время как это будет более или менее линейным (по предположению, а не основным comp-sci …)

 <?php function array_iunique($ar) { $uniq = array(); foreach ($ar as $value) $uniq[strtolower($value)] = $value; return array_values($uniq); } ?> 

Должно ли $ uvalue быть не в верхнем регистре? Так

 $uvalue = strtoupper($value): 

и еще одна альтернатива …

 function array_iunique($topics) { $ltopics = array_map('strtolower', $topics); $cleanedTopics = array_unique($ltopics); foreach($topics as $key => $value) { if(!isset($cleanedTopics[$key])) { unset($topics[$key]); } } return $topics; } не function array_iunique($topics) { $ltopics = array_map('strtolower', $topics); $cleanedTopics = array_unique($ltopics); foreach($topics as $key => $value) { if(!isset($cleanedTopics[$key])) { unset($topics[$key]); } } return $topics; } 

Впрочем, Pentium10 лучше.