ucwords first php arrays loops foreach

php - first - case-insensitive array_unique



laravel uppercase first letter (5)

¿Debería $ uvalue no estar en mayúscula? Asi que

$uvalue = strtoupper($value):

Intento escribir unas pocas líneas de código para hacer que la función de tipo único de una matriz insensible a mayúsculas y minúsculas sea mayúscula y minúscula. Esto es lo que tengo hasta ahora:

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); } }

El problema es la declaración if. Creo que hay algo mal con mi sintaxis, pero soy relativamente nuevo en PHP y no estoy seguro de qué se trata. ¿Alguna ayuda?


Está configurando tanto uvalue como uvalue en la versión en minúscula.

$uvalue = strtolower($value);

debiera ser

$uvalue = strtoupper($value);

Dicho eso, esto podría ser un poco más rápido. El rendimiento de tu función se degradará exponencialmente, mientras que esto será más o menos lineal (en una conjetura, no una competencia de ciencia ficción ...)

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


y otra alternativa ...

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; }

Sin embargo, Pentium10 es mejor.


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


function array_unique_ci ($arr) { return array_intersect_key ( $arr, array_unique ( array_map (''strtolower'', array_map (''trim'', $arr)) ) ); }

Además, no está de más recortar los valores antes de compararlos.