2010-12-23 10 views
5

Solo quería agregar un nuevo parámetro al frente de mi matriz con array_unshift, pero: si lo hago como de costumbre, tiene un índice numérico. ¿Cómo puedo rechazar el índice, p. algo así ...PHP: Array_unshift no es un índice numérico

<?php 
$queue = array("a", "B"); 
array_unshift($queue, "front" => "hello"); //Not working, this is my question ;) 
?> 

La matriz sería parecido a

Array { 
    front => hello 
    0 => a 
    1 => B 
} 

Respuesta

4

Parece que array_unshift no puede hacer lo que quiera. Pruebe esto:

$queue = array('a', 'B'); 
$queue = array_merge(array('front' => 'hello'), $queue); 

Esto le da el resultado que desea.

 
Array 
(
    [front] => hello 
    [0] => a 
    [1] => b 
) 
+0

Muchas gracias;) funciona! –

2

Uso array_merge:

$new_queue = array_merge(array("front"=>"hello"), $queue); 

La razón por la que debe utilizar array_merge y no array_unshift se debe a que este último solo funciona en matrices indexadas numéricamente.

+0

Sí, lo sé, pero ¿cómo puedo agregar con array_unshift un elemento con una cadena como índice? –

+0

@Florian Actualizado mi respuesta. –

+0

No puedes. array_unshift solo funciona con matrices numéricas. ¿Qué pasa con array_merge? – weltraumpirat

10

array_push, array_pop, array_shift, array_unshift están diseñados para las matrices numéricas.

Puede utilizar uno de los array_merge soluciones a algunas personas ya mencionadas o puede utilizar el operador + para las matrices:

$queue = array('front' => 'Hello') + $queue; 

Nota: Cuando se utiliza array_merge los elementos con las mismas claves de la segunda matriz se sobrescribe los del primer, por lo que si 'front' ya existe en $queue no se sobrescribirá, sino que solo se colocará al frente. Por otro lado, si usa +, el nuevo valor estará presente en el resultado y estará en la parte delantera.

+3

+1 por ser la respuesta que funcionará correctamente si ya hay un elemento 'frontal 'en la matriz. – salathe

+1

@salathe Gracias. Pero no estoy seguro de cuál de las dos opciones (+ o array_merge) realmente necesita el asker. Agregaré una nota para que tome conciencia de la diferencia. –

+1

con ambas opciones, el artículo estará al comienzo de la matriz, la diferencia es el valor que tiene. La pregunta deja en claro qué valor espera Florian. – salathe

Cuestiones relacionadas