2010-12-15 5 views
19

usando strtolower() en una matriz ¿hay alguna manera de hacer que la salida quede debajo de la minúscula?strtolower() en una matriz

<?=$rdata['batch_id']?> 
strtolower($rdata['batch_id']) 
+6

La pregunta no está clara. – zerkms

+0

@zerkms: Creo que la pregunta es si ese código modificaría el valor de '$ rdata ['batch_id']' cambiaría y la respuesta es no – RageZ

+0

@RageZ: Yo también lo pensé, pero es tan obvio que prefiero pensar que simplemente malentendí sus expectativas ;-) – zerkms

Respuesta

82

El nombre de la función correcta es strtolower(). Si desea aplicar esto en cada elemento de la matriz, puede utilizar array_map():

$array = array('ONE', 'TWO'); 
$array = array_map('strtolower', $array); 

Ahora su matriz contendrá 'uno' y 'dos'.

+1

Para una buena opción sin editar el contenido de mi matriz: if (! in_array (strtolower ($ filename [0]), array_map ('strtolower', $ filesArray))) { – ImaginedDesign

4

Si se echa un vistazo a la firma strtolower no menciona ninguna referencia

string strtolower (string $str) 

lo que el código no modificará el valor de $ rdata [ 'batch_id']

<?=$rdata['batch_id']?> 
strtolower($rdata['batch_id']); 

este código se prefiere

$rdata['batch_id'] = strtolower($rdata['batch_id']); 
6

array_map, pero otra solución es:

foreach($array as &$v) { 
    $v = strtolower($v); 
} 

Tenga en cuenta que el símbolo de unión & hace que el $v modificable.

+1

Asegúrese de hacer siempre " unset ($ v); " después de un ciclo foreach con un '&' en él. O asegúrate de no usar '$ v' en el mismo ámbito. De lo contrario, cualquier elemento nuevo asignado a $ v se colocará en su matriz original. Ejemplo donde las cosas salen mal: http://sandbox.onlinephpfunctions.com/code/6b6c3a779d5c43cebee4020786f6090632f33822 – DraughtGlobe

Cuestiones relacionadas