Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    restituzione array da funzione. problema struttura

    Salve a tutti. Mi sono imbattuto in un nuovo problema.
    Posto un esempio banale giusto per rendere l'idea.
    Codice PHP:
    for ($i 1$i <=3$i++)
    $array[] = $i;
    for (
    $i 4$i <=6$i++)
    $array[] = $i;
    echo 
    '<pre>';
    print_r($array);
    echo 
    '</pre>'
    Se eseguo questi due semplici cicli alla fine mi ritrovo

    Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    )

    Se invece volessi utilizzare una funzione e fare una cosa del genere

    Codice PHP:
    function prova($da,$a){
    for(
    $i $da$i <= $a$i++)
        
    $arr[] = $i;
    return 
    $arr;
    }

    $mio_array[] = prova(1,3);
    $mio_array[] = prova(4,6);
    echo 
    '<pre>';
    print_r($mio_array);
    echo 
    '</pre>'
    il mio risultato è questo:

    Array
    (
    [0] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    )

    [1] => Array
    (
    [0] => 4
    [1] => 5
    [2] => 6
    )

    )

    Domanda: come faccio utilizzando la funzione a ottenere la stessa struttura dei due (o più cicli for) postati all'inizio? Grazie a tutti.

  2. #2
    Codice PHP:
    function prova($da$a){
       global 
    $arr
       for(
    $i $da$i <= $a$i++) 
           
    $arr[] = $i
       return 
    $arr
     } 
    devi dare visibilita' all'array nella funzione.

    Edit ... poi ovviamente non devi rimettere l'indice alla seconda chiamata alla funzione:

    Codice PHP:
    $mio_array[] = prova(1,3); 
    $mio_array prova(4,6);  //  <---- non $array[]
    echo '<pre>'
    print_r($mio_array); 
    echo 
    '</pre>'

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Mille grazie Piero. Adesso funziona proprio come volevo. (Ovviamente ho eliminato le parentesi quadre da $mio_array al momento in cui richiamo la funzione).
    Come farei senza di te. Buona notte.
    Codice PHP:
    function prova($da,$a){
    global 
    $arr;
    for(
    $i $da$i <= $a$i++)
        
    $arr[] = $i;
    return 
    $arr;
    }

    $mio_array prova(1,3);
    $mio_array prova(4,6);
    echo 
    '<pre>';
    print_r($mio_array);
    echo 
    '</pre>'

  4. #4
    Originariamente inviato da nicola75ss
    Mille grazie Piero. Adesso funziona proprio come volevo. (Ovviamente ho eliminato le parentesi quadre da $mio_array al momento in cui richiamo la funzione).
    oppss.... avevo editato...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da piero.mac
    Edit ... poi ovviamente non devi rimettere l'indice alla seconda chiamata alla funzione:

    Codice PHP:
    $mio_array[] = prova(1,3); 
    $mio_array prova(4,6);  //  <---- non $array[]
    echo '<pre>'
    print_r($mio_array); 
    echo 
    '</pre>'

    Grazie, ho tardato a rispondere proprio perchè a causa di quell'errore non mi tornavano i conti.

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ho un nuovo problema.

    Se la funzione la volessi usare per la creazione di più array è possibile?

    Codice PHP:
    function prova($da,$a){
    global 
    $arr;
    for(
    $i $da$i <= $a$i++)
        
    $arr[] = $i;
    return 
    $arr;
    }

    $mio_array[] = prova(1,3); // le parentesi quadre ci vogliono solo la prima volta
    $mio_array prova(4,6);
    echo 
    '<pre>';
    print_r($mio_array);
    echo 
    '</pre>'
    Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    )

    Supponiamo ora la voglia riutilizzare per crearmi un secondo array

    $mio_array2 = prova(7,9);
    echo '<pre>';
    print_r($mio_array2);
    echo '</pre>';

    Ovviamente ottengo
    Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    )

    mentre io vorrei che il primo array contenesse i valori da 1 a 6 e un secondo array solo quelli da 7 a 9.
    Array
    (
    [0] => 7
    [1] => 8
    [2] => 9
    )

    in pratica è possibile con una sola funzione fare in modo che possa scegliere quando accodare gli elementi all'array e quando invece creare un nuovo array, magari passandole un terzo parametro?

  7. #7
    Originariamente inviato da nicola75ss
    in pratica è possibile con una sola funzione fare in modo che possa scegliere quando accodare gli elementi all'array e quando invece creare un nuovo array, magari passandole un terzo parametro?
    Codice PHP:
    <?php

    function prova($da$a$arr ''){
       global 
    $arr;
       for(
    $i $da$i <= $a$i++) 
           
    $arr[] = $i
       return 
    $arr
     } 

    $mio_array prova(1,3); 
    $mio_array prova(4,6);
    $mio_array2 prova(7,9$arr =array());
    echo 
    '<pre>'
    print_r($mio_array);
    print_r($mio_array2); 
    echo 
    '</pre>';

    ?>
    codice:
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )
    Array
    (
        [0] => 7
        [1] => 8
        [2] => 9
    )

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da piero.mac
    Codice PHP:
    <?php

    function prova($da$a$arr ''){
       global 
    $arr;
       for(
    $i $da$i <= $a$i++) 
           
    $arr[] = $i
       return 
    $arr
     } 

    $mio_array prova(1,3); 
    $mio_array prova(4,6);
    $mio_array2 prova(7,9$arr =array());
    echo 
    '<pre>'
    print_r($mio_array);
    print_r($mio_array2); 
    echo 
    '</pre>';

    ?>
    Pieroooooo.

    Grazie per la milionesima volta.

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.