Newsgroup: it.comp.www.php
Titolo: Problema di logica

Buongiorno a tutti, scrivendo una pagina in PHP mi sono ritorvato 
davanti ad un problema di logica che non riesco a risolvere.
La paginetta deve:
aprire un file di testo
prendere una riga
verificare se all'interno della riga viene trovato un elemento di un 
array già noto
A questo punto:
Se non viene trovato l'elemento mette in un nuovo array "0" e incrementa 
il valore $num per fare il confronto con l'elemnto successivo dell'array 
noto sulla stessa riga.
Se viene trovato l'elemento mette nel nuovo array il valore della riga, 
$num resta identico e rifà il confronto con la riga successiva 
ricaricandola.
Quello che ho provato a fare, ma chiaramente non funziona, è:
while (!feof($fp_fin)) // Finchè non è finito...
{$buffer = fgets($fp_fin, 70);  // Prendo una riga
   while(1)
   {
     if (stristr($buffer, $name_col[$num])===false) // Analizzo se 
continene il dato noto
     { array_push($occupata_col_da, "0");  // Ci butto dentro lo "0"
       $num++;
     }
      else
     { array_push($occupata_col_da, $buffer); // Ci butto dentro la 
stringa con il mezzo
       break 1;
     }
   }
}
Grazie per qualsiasi tipo d'aiuto.
Gian Leonardo

 array già noto A questo punto:
...
Non avendo la struttura del file e dei dati d'esempio vado un po' alla
cieca, ma dovrebbe funzionare:
<?php 
$find = array (); 
$filename = "";
$result = array ();
$row = 0;
$num = 0;
$file = file ($filename);
$count_file = count ($file);
$count_find = count ($find);
if ($count_file > 0)
{
	while (($row < $count_file) && ($num < $count_find))
	{
		$pos = strpos ($file[$row], $find[$num]); 
		if ($pos === false)
		{
			$result[] = 0;
			$num++;	
		}
		else
		{ 
			$result[] = $file[$row];
			$row++;
		}
	}
}
else
{ print ("Il file e' vuoto!"); }
?>
NB Ho presupposto che se si arriva al termine dell'array da cercare il
ciclo di ricerca si concluda ($num < $count_find).
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1

 
Grazie mille dell'aiuto, con qualche adattamento a quanto mi arriva sono 
riuscito a farlo andare al secondo colpo :-D
Però ho un piccolo problema: è possibile che nel file sorgente ci siano 
due righe con la medesima stringa interna e in questo caso devo mettere 
le due stringe all'intenro dello stesso puntatore dell'array.
Qualche idea di massima su un controllore da inserire nella parte di 
codice che mi hai dato.
Buona serata
Gian Leonardo

 all'intenro dello stesso puntatore dell'array.  
Umh ... La trama si infittisce ...
Il fatto e' che la cosa diventa ambigua.
Le righe ci sono sempre o solo in alcuni casi? Se sussiste la seconda,
come si fa a sapere quando accade il fatto? Si puo' discernere dalla
situazione normale? Le due righe sono consecutive od alternate?
Potresti portare degli esempi piu' dettagliati? 


 
Ora ti spiego: da un db viene generato un file di testo.
Elenca se disponibili alcuni oggetti.
La loro disponibilità può anche essere doppia o multipla.
Non è determinabile in altro modo se non leggendo il file.
Faccio un esempio
PIPPO	MILANO
PIPPO 	ROMA
PIPPO	NAPOLI
PLUTO	CASERTA
Ora io ho un array di riferimento con la casistica dell'ordine possibile 
composta da singoli elemnti ("PAPERINO", "PIPPO", "PLUTO")
Devo creare un array nuovo dove alla posizione 0 di paperino, dato 
l'esempio sia associato 0 visto che non esiste nulla, a pippo devo 
associare la stringa "MILANO;ROMA;NAPOLI" nella posizione 1 dell'array e 
a pluto in posizione 2 "CASETA".
Spero di essere stato chiaro.
Per ora tutto funziona correttamente se non ci sono ripetizioni, 
altrimenti perdo dati non assegnando più alcun riferimento "logico" alle 
scansioni. Una possibile soluzione sarebbe memorizzare in che posizione 
dell'array ci si sta trovando e se l'acquissizione successiva fa 
riferminto alla stessa la deve accodare alla stringa presente, il che 
non è poi così complesso ;-) Ma tra il pensare e il far girare codice ce 
ne passa :-(
Ciao
Gian Leonardo

 Non è determinabile in altro modo se non leggendo il file.
Posso suggerire una strada alternativa?
Crei una tabella nel DB di PHP (es MySQL) e carichi i valori dal file,
poi fai tutto tramite SQL. Facile, veloce, indolore.
