Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    array come valore indice > array1[array2[5]]

    'sera a tutti,
    sicuramente è la solita fagianata che non vedo nemmeno se ci cado dentro, comunque...

    con un explode ricavo un array di valori, diciamo $pippo[]

    con un secondo explode ricavo $pluto[]

    ora mi serve usarli in questo modo:

    codice:
    echo $pippo[ $pluto[5] ];
    tanto per fare un esempio, il problema è che non mi restituisce nulla di nulla, nemmeno un errore.

    Ovvimente se faccio:

    codice:
    echo $pippo[2];
    ottengo il risultato aspettato.

    Sono sicuro contengano dei valori, anche perchè come detto prima, sono array risultanti da un explode.

    Cosa sbaglio ?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Caso pratico, così ci capiamo al volo
    codice:
    $array = array(array("Mela", "Pera", "Banana"), array("Carciofi", "Zucchine"), "Frutta", "Verdura", 1 , 6, 2007);
    Se tu chiedi
    codice:
    $pippo = $array[0];
    $pippo sarà effettivamente un array, e conterrà "Mela", "Pera", "Banana"

    Se però chiedi
    codice:
    $pippo = $array[2];
    $pippo sarà una stringa, "Frutta"

    Se adesso chiedessi
    codice:
    $pluto = $array[4]; //$pluto = 1;
    
    // e dopo
    $pippo = $array[$pluto];
    $pippo conterrebbe l'array "Carciofi", "Zucchine".

    Tu in che caso sei?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Ciao Andrea,

    sinceramente, visto il mio smarrimento non mi ci trovo, faccio io l'esempio pratico

    codice:
    $insieme = 'mela,pera,banana';
    
    $stringa_1 = explode(',', $insieme);
    
    ora mi ritorvo con l'array 
    $stringa_1[0] = mela
    $stringa_1[1] = pera
    $stringa_1[2] = banana
    
    $stringa_2 = array(=>1 '1','2','3');
    
    mi serve "pera"....
    
    $stringa_1[ $stringa_2[2] ];
    
    che dovrebbe essere come se scrivessi banalmente $stringa_1[1] = "pera"
    non so se mi sono spiegato, cosa che non è il mio forte

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Sì, "l'errore" penso che sia negli apici che convertono in string il valore numerico. Fosse stato

    $stringa_2 = array(1,2,3);

    per ottenere "Pera" avresti dovuto fare

    $stringa_1[$stringa_2[0]]

    Questo perché l'indice degli array parte da 0 e quindi pera si trova in posizione 1 dell'array $stringa_1. Il valore 1 nell'array $stringa_2 è in posizione 0.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Ssu questo siamo d'accordo, il fatto è che non mi restituisce ne pera ne mela, ne nulla, fosse un problema di puntamento...non sarebbe un problema, qui il fatto è che non tira fuori proprio nulla.

    Mi viene in mente, non è che considera i valori si $stringa_2 come stringhe ? e se si, come posso risolvere

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Secondo me, stai pasticciando, questo funziona alla grande

    codice:
    <?php
    $stringa_1 = array("Mela", "Pera", "Banana");
    $stringa_2 = array(1, 0, 2);
    echo($stringa_1[$stringa_2[1]]);
    ?>
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    scusa il ritardo ma sono stato trascinato fuori....

    ho provato è funziona, quindi ho controllato 2 cose.

    Ho notato che i numeri che vengono messi nell'array numerica non sono 1,2,3 ma 01,02,03, quindi gli ho messi manualmente tipo

    $array[01]

    e funziona ugualmente, non funziona invece se richiamato come sopra ovvero

    codice:
    <?php
    $stringa_1 = array("Mela", "Pera", "Banana");
    $stringa_2 = array(01, 02, 03);
    echo($stringa_1[$stringa_2[1]]);
    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    prova a fare un cast... non so se vada:

    echo($stringa_1[$stringa_2[1]]);

    diventa

    echo($stringa_1[(int)$stringa_2[1]]);
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Originariamente inviato da serialkiller
    scusa il ritardo ma sono stato trascinato fuori....

    ho provato è funziona, quindi ho controllato 2 cose.

    Ho notato che i numeri che vengono messi nell'array numerica non sono 1,2,3 ma 01,02,03, quindi gli ho messi manualmente tipo

    $array[01]

    e funziona ugualmente, non funziona invece se richiamato come sopra ovvero

    codice:
    <?php
    $stringa_1 = array("Mela", "Pera", "Banana");
    $stringa_2 = array(01, 02, 03);
    echo($stringa_1[$stringa_2[1]]);
    ?>
    A me il tuo codice semplicemente copiato e incollato mi restituisce tranquillamente "banana", che è corretto

    Ricorda che gli array partono DA ZERO, quindi sarebbe più corretto
    $stringa_1 = array("Mela", "Pera", "Banana");
    $stringa_2 = array(0, 1, 2);

  10. #10
    Originariamente inviato da Andrea1979
    prova a fare un cast... non so se vada:

    echo($stringa_1[$stringa_2[1]]);

    diventa

    echo($stringa_1[(int)$stringa_2[1]]);
    perfetto, così funziona, basta anche solo:

    codice:
    echo $stringa_1[(int)$stringa_2[1]];
    senza le parentesi esterne, era quindi un problema di numeri che secondo me venivano considerati stringhe.

    Grazie infinite per la pazienza

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.