Newsgroup: it.comp.www.php
Titolo: Con cosa sostituire include() in un array?

Ciao a tutto il gruppo.
Avrei desiderio di capire una cosa: se voglio far sì che l'elemento di
un array rappresenti il contenuto di un file.txt esterno, come devo
fare?
Ho provato così:
$a=array('aaa0'=>0,'aaa1'=> 1,[eccetera] 'aaa5' => include('file.txt'));
echo $a['aaa5'];
E in effetti funziona, ma mi aggiunge un "1" alla fine del testo, cioè,
l'output che ottengo è:
il mio testo1
mentre nel file.txt avevo scritto:
il mio testo // (e basta).
Ne deduco che c'è un errore di sintassi, o meglio, "concettuale", un
errore che attualmente non capisco, ma che in seguito cercherò di
mettere a fuoco (un vostro aiuto non guasterà neanche in questo caso
^_^).
Cortesemente, mi dite è la giusta funzione per ottenere il risultato che
cerco?
Grazie mille a tutti.
-- 
Nicoletta

 cerco?
Mi spiace, ma questa risposta è solo per ringraziare te, per avermi
insegnato qualcosa! :-)
A proposito dell' 1 finale,  non ho la più pallida idea.:-(
Non so se hai già provato, ma aggiunge sempre 1, qualunque sia il testo?
Hai provato con un testo con più righe? Magari fa il count delle righe.
Non so suggerirti altro, ma... sono disposto ad imparare; se trovi la
soluzione, faccelo sapere.
--
E' in corso la procedura di voto per
 *it.hobby.radioamatori.moderato*
73 de IK2VTJ, Piero.
http://www.ardf.it
http://www.qsl.net/ik2vtj
Togli/Remove
NONVOGLIOSPAM
dall'indirizzo/from address

 soluzione, faccelo sapere.
Non mancherò, a presto ^_^
-- 
Nicoletta

 insegnato qualcosa! :-)
Ci ho studiato un po', ebbene: non ti ho insegnato un bel niente :-(
Lontana da averne scovata la soluzione, ho capito dove si nasconde
l'errore e che cos'č quell' "1".
Dunque, all'interno o all'esterno dell'array, un include() o un
require() svolgono immediatamente il loro compito, cioč, "includono" (e
subito stampano) il contenuto del file esterno. Pertanto quel che vedevo
sulla pagina NON ERA il solo $a['aaa5'] ma era il testo di file.txt
*piů* l'indice della chiave $a['aaa5']. Ecco che tutto torna. 
Adesso non rimane che capire come diavolo si fa (e soprattutto se si
puň) assegnare a una variabile il contenuto di un file esterno.
Mi strappo i capelli :-(
-- 
Nicoletta

 Mi strappo i capelli :-(
  $strappo = join("", file("capelli.txt"));
Mette il contenuto del file capelli.txt nella variabile $strappo
in formato stringa (binary safe).

 in formato stringa (binary safe).
E funziona bene anche introducendola nell'array, guarda:
$NonMeLiStrappoPiu = join("", file("capelli.txt"));
$a=array('aaa0' => 0,  [ecc] 'aaa5' => $NonMeLiStrappoPiu);
Ma non ha buon esito se trattata direttamente all'interno di $a:
$a=array('aaa0' => 0,  [ecc] 'aaa5' => join("", file("capelli.txt"));
poiché (suppongo) la virgola è il segno che separa gli elementi, e non
può appartenere all'array se non per tale scopo.
A puro titolo di curiosità, conosci (o conoscete, parlo con tutti
naturalmente) un'escamotage per effetturare il join("", all'interno
dell'array? 
Grazie infinite, il php mi diverte moltissimo, questa giornata di
libertà sento di non averla sprecata ^_^
-- 
Nicoletta

 *piů* l'indice della chiave $a['aaa5']. Ecco che tutto torna.
Bene! Se prometti di non arrossire, ti faccio notare che anche questa volta
hai insegnato qualcosa.
Naturalmente, l'intervento di Jurgen č sempre quello risolutivo!! :-)


 dell'array?
'Escamotaggiare' con qualche parentesi (cosi il value
[key => value] viene interpretato giusto, PHP si aspetta un 'expression', ma
ha qualche problema con stringhe implicite):
   $a=array('aaa0' => 0, 'aaa5' => (join("", file("capelli.txt"))) );
oppure con un typecast
   $a=array('aaa0' => 0, 'aaa5' => (string) join("", file("capelli.txt")) );
Dove nasce questo problema?
Nel caso del array potresti usare seguente sintassi:
   array('aaa0' => capelli)
capelli viene interpretato come string senza la sintassi 'classica'.
   array('aaa0' => join)
anche join viene interpretato come string (e non come funzione).
Cmq. IMHO un 'flaw' del PHP di interpretare cosi il 'value'.
;-)

 ha qualche problema con stringhe implicite):
Sono le 5:00 del mattino, e la giornata di oggi non sarà così... diciamo
creativa come quella di ieri. Ti rispondo unicamente per ringraziarti
(non ce la faccio ad aspettare domani o il giorno dopo); al momento non
ho tempo di seguire le tue indicazioni, ma giuro che quando torno "tra i
vivi" faccio un escamotaggiamento-escamotaggiazione mai vista al mondo.
Voglio che in giro si sappia: il PHP DOVRA' FARE I CONTI CON ME D'ORA IN
POI! :-))
 
Un bacione a te e due bacioni (sì due! anzi tre! quattro! cinque!) a
Piero; è davvero un bel gruppo, complimenti ^_^
Buona giornata e buon lavoro a tutti
-- 
Nicoletta

 Buona giornata e buon lavoro a tutti
Adesso sono io ad arrossire!! :-)


 ha qualche problema con stringhe implicite):
Non so cosa siano le stringhe implicite, ma funge, Funzia, FUNZIONA!
Splendido :-)
Ora sono alle prese con un nuovo smanettio: metto e tolgo elementi dagli
array. Tutto bene, ma non mi accontento mai, sono fatta così ^_^
Per accodare un elemento:
array_push ($a, "nuovo contenuto"); // perfetto
E se volessi, assieme all'elemento, aggiungere anche la sua relativa
chiave?  
Ho spulciato il manuale senza successo, ecco che sono passata alle vie
empiriche, questa è una:
 array_push ($a, 'nuovachiave' => 'nuovo contenuto'); /* sbagliato
questo e sbagliati anche tentativi d'altro genere */
in pratica, questo array 
('chiave1' => 'cont 1','chiave2' => 'cont 2');
vorrei diventasse così:
('ch1' => 'cont 1','ch2' => 'cont 2','nuovachiave' => 'nuovo
contenuto');
Che voi sappiate, c'è un modo?
Grazie ^_^
-- 
Nicoletta

 chiave?  
$a['nuovachiave']='nuovocontenuto';
non va bene? Adesso non ricordo se lo appenda alla fine o se ordini
l'array in modo alfabetico...



Alla fine.
Considera anche che l'indice può essere espresso con una variabile:
$b = 'altrachiave';
$arr[$b] = 'altrocontenuto';
Altra soluzione:
$arr = array('chiave1' => 'cont 1','chiave2' => 'cont 2');
$brr = array('chiave3' => 'nuovo contenuto');
$arr = array_merge ($arr, $brr);
Ma occhio al nome della chiave: se esiste già, il relativo valore precedente
viene sostituito con il nuovo.


 Ho spulciato il manuale senza successo, ecco che sono passata alle vie
$a += array ('nuovachiave' => 'nuovo contenuto');
oppure
$a = $a + array ('nuovachiave' => 'nuovo contenuto');
;-P
Cmq. molta molta attenzione con questo operatore, di solito meglio
un altro modo:
$a = array_merge($a, array('nuovachiave' => 'nuovo contenuto'));
Spulcia un po' qui per sapere perche' usare molta
attenzione: 
http://it.php.net/operators.array

Alessandro wrote:
<cut>
PieroIK2VTJ wrote:
<cut>
Jurgen wrote:
<cut>
GRAZIE A TUTTI E TRE! ^_^
Mi vedrete presto, ciao
-- 
Nicoletta