Newsgroup: it.comp.www.php
Titolo: Array multidimensionali o cosa? (per catalogazione ANNO e MESE)

Salve a tutti.
Pongo qui il mio problema, nella speranza che qualcuno sappia darmi
un'idea o meglio un punto di vista per risolvere il problema.
Dunque, io ho un file di testo cosi' composto:
ANNO/MESE
2006/01
2006/02
2006/05
2006/07
2005/01
2005/02
2005/03
2005/06
2004/09
2004/10
2004/11
2004/12
Quello che vorrei fare, e' crere un "qualcosa" (un array
multidimensionale?) che, passando l'anno, mi restituisca tutti i
relativi mesi che ho, per quell'anno.
Ad esempio, sapere che per l'anno 2005 ho a disposizione i mesi 01, 02,
03, 06.
Come posso organizzare la cosa?
Grazie.

Se il file di testo ha questa forma regolare (ossia sarà sempre
scritto in questo modo) ovviamente evitando qualunque tipo di errore, a
occhio mi viene in mente questo codice (tutto da verificare):
<?php
// apertura tuofile in sola lettura
$filetesto = fopen("tuofile.txt", "r");
// continua il ciclo fino alla fine del file
while (!feof($filetesto)) {
  // estrapolo riga di testo dal file
  $rigatesto = fgets($filetesto, 4096);
  // se la riga non è vuota procedo all'analisi
  if (!empty($rigatesto)){
    // divido la stringa in ingresso in base al carattere /
    $stringaannomese=split("/", $rigatesto,3);
    // in uscita ottengo un array con due campi utili
    // controlliamo che i campi siano numerici e non di testo togliendo
caratteri strani
$stringaannomese[0]=(preg_replace("/[\D]/","",$stringaannomese[0]));
$stringaannomese[1]=(preg_replace("/[\D]/","",$stringaannomese[1]));
    // se i valori che otteniamo sono maggiori di 0 allora sono mesi e
anni validi
    // ovviamente ci vorrebbero altri controlli ....
 	if (($stringaannomese[0]>0) && ($stringaannomese[1] > 0)){
       // inserisco i valori nell'array il primo campo è l'anno
	   $array["$stringaannomese[0]"][]=$stringaannomese[1];
	}
  }
}
// visualizzami ora i mesi corrispondenti nell'anno 2005
print_r($array["2005"]);
fclose($filetesto);
?>
Anzi lo ho verificato perchè sto facendo anche io i miei primi passi
su php e direi che funziona, spero che ti sia stato utile ;)

 03, 06.
Potresti memorizzare il contenuto del file in un array, tramite la
funzione file() e poi recuperare i mesi dell'anno specificato
attraverso la funzione explode().
Qualcosa da cui partire:
<?php
function getMonths($filename, $year)
{
  $rows = file($filename);
  $output = array();
  foreach ($rows as $value) {
    $parts = explode('/', $value);
    if ($parts[0] == $year) {
      $output[] = substr($parts[1], 0, -1);
    }
  }
  return $output;
}
$months = getMonths('dati.txt', '2006');
echo '<pre>'.print_r($months, true).'</pre>';
?>
Alla funzione getMonths() passi il nome del file (dati.txt) e l'anno
di cui vuoi recuperare i mesi (nell'esempio '2006') ed essa
restituisce un array con i mesi corrispondenti ($months).
Quella sopra è solo una possibile traccia. La funzione è da migliorare
e da completare sotto diversi aspetti (controlli, cose deve
restituire nel caso non trovasse l'anno, gestire meglio l'ultimo
carattare di ogni riga "\n", eccetera...). Senza dimenticare che
forse, quello che ti ho proposto non è il modo migliore per ottenere
quello che volevi.
Ulteriori informazioni sulle funzioni che ho usato:
file(): 
http://it2.php.net/manual/en/function.file.php
explode(): 
http://it2.php.net/manual/en/function.explode.php
substr(): 
http://it2.php.net/manual/en/function.substr.php
Ciao.
-- 
Federico

Grazie a tutti, mi siete stati utilissimi!!!!