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

    [Non banale] Ciclare un array

    Ho inserito nel titolo [Non banale] perchè anche il più neofita qui dentro potrebbe considerare l'argomento "Ciclare un array" come una domanda da niubbo.
    In realtà il mio problema è un pò più complesso

    Ho creato un array di array, e tutti gli array al posto di utilizzare l'indicizzazione numerica usano delle copie nome-valore secondo questo schema

    codice:
    $menu = array(
    	"opzioni" => array(
    		'titolo' => 'Opzioni:',
    		'nome' => null,
    		'link' => null,	
    		'args' => null
    	),
    	"operazioni" => array(
    		'titolo' => 'Dati',
    		'nome' => 'mod',
    		'link' => 'mod',
    		'args' => null
    	)
    )
    quindi per accedere al dato link del secondo valore devo scrivere
    $menu['operazioni']['link']
    e fin qui tutto ok


    Il problema nasce nel momento in cui io ho bisogno di ciclare e stampare questo array senza conoscerne le chiavi...

    quindi dopo aver definito l'array farei
    codice:
    for($i=0; $i<count($menu); $i++){
    
    	echo "[*]".$menu[$i]['titolo']."\n";
    
    }
    Solo che mi stampa i tag li tutti vuoti

    Stò facendo qualche cagata io? Esiste un modo particolare?
    Grazie per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    121
    $menu[$i] te lo da vuoto perchè il tuo array non ha indici numerici, gli indici del tuo array menu dell'esempio sono opzioni e operazioni, quindi per recuperare il loro valore devi fare riferimento a $menu["opzioni"] e menu["operazioni"].

    Per recuperare dinamicamente le chiavi di un array esiste la funzione array_keys(array) che restituisce un array con le chiavi dell'array dell'argomento (scusa gioco di parole...), per esempio se fai:

    $chiavi=array_keys($menu);

    l'array chiavi (che ha indice numerico) sarà del tipo:

    $chiavi[0]=>opzioni
    $chiavi[0]=>operazioni

    una volta che hai un array di chiavi puoi ciclare per prendere dinamicamente il valore dell'array, considerando che hai due array con indici non numerici la questione si complica; ti faccio un esempio semplice, metti che tu abbia

    $arr=array("a"=>"primovalore","b"=>"secondovalore" );

    per recuperare i valori senza conoscere i nomi delle chiavi puoi fare:

    $chiavi=array_keys($arr);
    for ($i=0;$i<count($chiavi);$i++)
    print($arr[$chiavi[$i]]);

    comunque quando lavori con gli array è comodo conoscere anche la funzione print_r(array) che ti stampa automaticamente tutto l'array, così puoi sempre vedere facilmente che c'è dentro

  3. #3
    Grazie mille ha funzionato

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    codice:
    foreach ($menu as $menuItem) {
        // E trovi in $menuItem ogni singola voce del
        // tuo menu, come un array. Per provare:
        print_r($menuItem);
    }
    There are 10 types of people in the world - those who understand binary and those who don't.

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.