Newsgroup: it.comp.www.php
Titolo: utile un array associativo?

Ciao a tutti. ho questo codice:
array1($titolo1,$titolo2,$titolo3,$titolo4); //sino a 20
array2($autore1,$autore2,$autore3,$autore4); //sino a 20
dovrei far sì che venga stampato in questo modo
I promessi sposi - Alessandro Manzoni
ecc... ecc...
Siccome non so quanti titoli o autori verranno compilati ho creato un 
ciclo prima che mi prendesse solo i campo compilati.
In pratica ho una forma con 20 campi titolo (titolo1, ecc...) affiancati 
da 20 campi autore (autore1, ecc...)
Nella pagina che prende i dati, recupera solo i campi titoloX e autoreX 
contenente i dati e poi dovrebbe stampare i titoli e gli autori nella 
forma indicata sopra. È utile un array associativo per lo scopo? In caso 
affermativo come lo costruisco visto che ho provato seguendo consigli su 
internet, ma ottenendo pessimi risultati?
Grazie


$a[$key]=$value questo è un array associativo o hash

 $a[$key]=$value questo č un array associativo o hash
Sě ok, ma č corretto se lo scrivo cosě?
$array1=array($titolo1,$titolo2,$titolo3,$titolo4); //sino a 20
$array2=array($autore1,$autore2,$autore3,$autore4); //sino a 20
$variabile = $a[$array1]=$array2;
echo $array1." - ".$variabile."<br>";

 array2($autore1,$autore2,$autore3,$autore4); //sino a 20
Dunque ho optato per array_combine, ma sul server c'è PHP4 e non posso 
far altro che sostituire array_combine con una funzione. Benissimo sin 
qui ci siamo ora ho un array il cui risultato è questo:
Array
(
     [titolo1] => autore1
     [titolo2] => autore2
     [titolo3] => autore3
)
Come posso ora stamparlo a video come indicato?
Titolo1 - Autore1
Titolo2 - Autore2
Titolo3 - Autore3

 Titolo3 - Autore3
Ops avevo dimenticato l'ottimo uso di while :)
Riassumendo ho risolto così:
pagina form.php
[CODE]
<input type="text" value="" name="titoloX">
<input type="text" value="" name="autoreX">
<br>
<!-- ripetuto per 20 volte; X progressivo da 1 a 20 -->
<!-- naturalmente la ripetizione avviene tramite contatore -->
[/CODE]
pagine form_action.php //raccoglie i dati di form.php
[CODE]
<?php
$nomevar=array_keys($HTTP_POST_VARS);
for($i=0;$i<count($nomevar);$i++)
{
   $$nomevar[$i]=$_POST[$nomevar[$i]];
   $$nomevar[$i]=aHtml($$nomevar[$i]);
}
function array_combine($keys,$values) // funzione array_combine per PHP4
{
   $result = array();
   reset($keys);
   reset($values);
   while($key = each($keys))
   {
     $value = each($values);
     if($value === false)
       $result[$key[1]] = "";
     else
       $result[$key[1]] = $value[1];
   }
   return $result;
}
$key=array($titolo1,$titolo2,ecc... sino a 20);
$valori=array($autore1,$autore2,ecc... sino a 20);
$array_libri= array_combine($key,$valori);
while ($libri=each($array_libri))
   if ($libri[key]!="") {
     echo "$libri[key] - $libri[value]<br>";
   }
?>
[/CODE]
Spero possa servire a qualcuno :)
sicuramente non ai più esperti di me :P

 Ops avevo dimenticato l'ottimo uso di while :)
E avresti fatto meglio a dimenticarlo in questo caso. LOL
usa
foreach($array as $chiave => $valore) {
   echo $chiave . " - " . $valore . "<br />";
}
-- 
rob4you
www.outofmind.eu

rob4you ha scritto:

Ok, ma la differenza?
Intendo dire è più utile foreach rispetto a while?
Mi sembra facciano la stessa cosa nella pagina da me costruita.

 Mi sembra facciano la stessa cosa nella pagina da me costruita.
Certo, il risultato è lo stesso.
Ma tieni presente che il costrutto foreach è stato creato apposta per
ciclare array. E' quindi creato proprio a quello scopo.
Se esiste qualcosa usata dall'intera comunità PHP, perché cercare un
sistema un po' più "artificioso"?
-- 
rob4you

rob4you ha scritto:

Sì la mia domanda era un più "specifica". Intendo dire: while è meno 
preformante di foreach o il contrario? L'uso di while (nel caso 
specifico) potrebbe generare errori o essere "bucato" in qualche modo?
In tal caso tengo presente foreach anche per il futuro.
Scusa, ma sto imparando ed ovviamente si impara con la pratica ed il 
confronto.