Ciao a tutti,

qualcuno è in grado di spiegarmi il perché di questo comportamento di php?
Il secondo blocco di codice, identico al primo, genera un warning.


Array sizes are inconsistent


Se vado a vedere il dump di $data vedo l'inconsistenza ma non ne capisco la ragione, sembra che

$data = array();

non resetti quell'array


mi ci sto mischiando il cervello...



codice:
<?
error_reporting(E_ALL);

// PRIMO BLOCCO DI CODICE
$data = array();

$data[2] = array('volume' => "primo", 'edition' => 2);
$data[3] = array('volume' => "secondo", 'edition' => 1);

foreach ($data as $key => $row) {
   $volume[$key]  = $row['volume'];
   $edition[$key] = $row['edition'];
}

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

// SECONDO BLOCCO DI CODICE
$data = array();

$data[2] = array('volume' => "terzo", 'edition' => 2);
$data[3] = array('volume' => "quarto", 'edition' => 1);

foreach ($data as $key => $row) {
   $volume[$key]  = $row['volume'];
   $edition[$key] = $row['edition'];
}

var_dump($volume);
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

Se cambio il modo di riempire l'array e lo faccio in modo "più corretto" quel warning non appare..

$data[] = array('volume' => "terzo", 'edition' => 2);
$data[] = array('volume' => "quarto", 'edition' => 1);


qualcuno sa spiegarmi cosa mi sfugge?


grazie!