Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    74

    array_multisort: Array sizes are inconsistent

    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!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    131
    se metti $data[2],
    anche se tu non lo inizializzi $data[0] e $data[1] esistono (gli array partono da 0 come puntatore)
    e quindi ti fa casini la funzione sort

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    74
    Non credo sia così, infatti se fosse così avrei quel warning anche all'esecuzione del primo blocco.

    Credo che il problema sia nell'array multidimensionale, praticamente nel fatto che ho resettato $data e non

    $volume

    e

    $edition


    occorreva resettare anche loro.


    Ho fatto così e va tutto ch'è un'orologino

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.