Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    2 domande su un array multidimensionale

    1) E' giusto inizializzare un array multidimensionale vuoto in questo modo?
    $libri = array("titolo" => array(), "autore" => array());

    Come si può intuire dovrei poi scrivere del codice per fare gli inserimenti da un form e in seguito creare una tabella che mostri il contenuto dell'array.

    2) Una volta che avrò alcuni dati nell'array, diciamo 5 libri con relativo titolo ed autore, come scrivo il codice per stampare il titolo del terzo libro, qualunque esso sia e senza conoscerne ovviamente il titolo o l'autore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    1) sì, è una inizializzazione valida
    2) dovresti scorrere l'array fino al terzo indice oppure:
    Codice PHP:
    // se devi estrarre l'elemento $i-esimo (con indice a partire da 0)
    $titoli array_values($libro['titolo']);
    $titolo $titoli[$i]; 
    anche se dall'uso che vuoi fare forse potresti usare un array così:
    Codice PHP:
    $libro = array(
      array(
    'titolo' => $titolo1'autore' => $autore1),
      array(
    'titolo' => $titolo1'autore' => $autore2),
      ...
    ); 
    e in questo caso potresti accedere all' $i-esimo libro con $libro[$i]['titolo'] (analogamente per l'autore).

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Nel secondo caso se ho ben capito potrei inizializzare l'array semplicemente in questo modo:
    $libri = array();

    e poi inserire gli elementi che a loro volta sono degli array, del tipo:
    $libri = array('titolo' => $titolo1, 'autore' => $autore1);
    $libri = array('titolo' => $titolo2, 'autore' => $autore2);
    ...

    ogni istruzione di questo tipo mi aggiungerà una entry "titolo - autore" all'array $libri, è giusto?

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Alhazred
    Nel secondo caso se ho ben capito potrei inizializzare l'array semplicemente in questo modo:
    $libri = array();

    e poi inserire gli elementi che a loro volta sono degli array, del tipo:
    $libri = array('titolo' => $titolo1, 'autore' => $autore1);
    $libri = array('titolo' => $titolo2, 'autore' => $autore2);
    ...

    ogni istruzione di questo tipo mi aggiungerà una entry "titolo - autore" all'array $libri, è giusto?


    $libri[] = array('titolo' => $titolo1, 'autore' => $autore1);
    $libri[] = array('titolo' => $titolo2, 'autore' => $autore2);

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Aaargh, hai ragione, ho dimenticato le quadre.

    Per il resto fila il ragionamento?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    direi di sì... (inizializzazione come dici e inserimento come indicato da bubi1)

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ok, sembra funzionare tutto.
    Ho da aggiungere un altro paio di domande:
    3) come svuoto l'array? Ho provato con unset($libri), ma questo elimina proprio l'array, non solo le entry.

    4) come elimino una sola entry sapendo ad esempio il titolo? unset($libri[$titolo])? In caso affermativo, cancellerebbe anche il relativo autore (io vorrei di si)?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Originariamente inviato da Alhazred
    Ok, sembra funzionare tutto.
    Ho da aggiungere un altro paio di domande:
    3) come svuoto l'array? Ho provato con unset($libri), ma questo elimina proprio l'array, non solo le entry.
    Codice PHP:
    $libri = array(); 
    L'inizializzazione è proprio la creazione del vettore vuoto

    4) come
    elimino una sola entry sapendo ad esempio il titolo? unset($libri[$titolo])? In caso affermativo, cancellerebbe anche il relativo autore (io vorrei di si)?
    puoi iterare sul vettore $libri e facendo un confronto per ogni elemento memorizzi l'indice quando trovi il titolo - o l'autore - desiderato, dopodichè elimini quel singolo elemento, es.:
    Codice PHP:
    reset($libri); $j=false;
    while ((list(
    $i$libro)=each($libri)) && (!$j)) {
      if (
    $libro['titolo']==$titolo$j=$i;
    };
    if (
    $j) unset($libri[$j]); 
    (codice da verificare non testato)

    probabilmente però ti converrebbe strutturare gli array diversamente, in base anche al tipo di ricerche che andrai a fare... dipende

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non capisco questo cosa dovrebbe fare
    list($i, $libro)=each($libri)

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Originariamente inviato da Alhazred
    Non capisco questo cosa dovrebbe fare
    list($i, $libro)=each($libri)
    preleva un elemento alla volta dal vettore assegnando l'indice a $i e il valore (cioè il vettore array('titolo'=>..., 'autore'=>...) a $libro)

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.