2010-03-04 16 views
5
(I'm a beginner) 

Mi script utiliza el estándararray_diff y teclas numéricas renumeración

$c = 0; 
$t = count($array); 

while ($c < $t) { 
    $blah = $array[$c]; 
    ++$c; 
} 

más ampliamente. Pero acabo de encontrarme en una situación en la que también necesito array_diff y se rompe todo al carajo porque ahora las teclas numéricas tienen espacios vacíos. Recibo errores de Undefined offset por todo el lugar.

¿Cómo restablezco las teclas numéricas de una matriz? El orden de los objetos en la matriz es irrelevante.

Respuesta

25

Para restablecer las teclas, puede utilizar array_values():

$array = array_values($array); 
7

No es necesario para restablecer las claves de usted matriz: usted tiene que cambiar la forma en que van a través de él.

En lugar de utilizar un bucle while y acceder a los elemnts matriz mediante un índice, se debe utilizar un bucle foreach, que sólo va a conseguir que los elementos de la matriz:

foreach ($array as $key => $value) { 
    // $key contains the index of the current element 
    // $value contains the value of the current element 
} 
+0

+1 para ti porque sin duda usaré ese conocimiento en otro lugar. Pero el cheque tiene que ir a Tatu por golpear la diana. Gracias, Pascal. – Drew

+0

@Andrew: de nada :-) ;; Sí, sé que realmente no estaba respondiendo la pregunta, pero pensé que esto sería útil de todos modos * (y siempre uso foreach para recorrer los elementos de arrays) * ;; y como vi otra respuesta ya mencionada sobre 'array_values', no la puse en la mía. –

+0

Le agradezco que se tome el tiempo para responder, realmente lo hago. Todavía me estoy mojando los pies y estoy reconociblemente en la fase "Tengo un martillo de kickass" aprendiendo a programar. Así que, de nuevo, gracias por el empuje expansivo y útil en el camino hacia un diseño de código más apropiado. – Drew

2

Gracias Tatu.

Para el lulz, voy a compartir con ustedes este truco idiota he usado a la espera de una respuesta sensata:

$badArray = array_diff($allData, $myData); 

$string = implode(",",$badArray); 

$dump = explode(",",$string); 

$goodArray = $dump; 

trabajaban. Me hizo sentir todo sucio, pero funcionó.

Cuestiones relacionadas