[php] zapis do tablic

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
MiChaSSs
Posty: 18
Rejestracja: czw cze 10, 2004 11:14 pm

[php] zapis do tablic

Post autor: MiChaSSs »

Cześć. Mam pytanko, jak sie dodaje do tablicy załóżmy mam taki skrypt:

[php]<?php
$tablica=array("jablko","gruszka");
$tablica[]="banan"; // w ten sposób dadalem do końca tablicy "banan"-a ;]
echo ($tablica[2]) // wyświetli sie banan
?>[/php]

ale po wykonaniu tego skryptu ten "banan" nie zapisze sie w tablicy, ja chcialbym żeby po wykonaniu skrytpu tablica wygladala tak:

[php]<?php
$tablica=array("jablko","gruszka";"banan");
?>[/php]

Czy mogłby mi ktos pomóc ?? :) Za wszelkie sugestie z góry thx :)
templar
Nowy
Nowy
Posty: 69
Rejestracja: ndz maja 16, 2004 3:19 pm
Lokalizacja: Kolbuszowa
Kontakt:

Re: [php] zapis do tablic

Post autor: templar »

nie wiem wczym problem. wszystko dziala tak jak chcesz
MiChaSSs
Posty: 18
Rejestracja: czw cze 10, 2004 11:14 pm

Re: [php] zapis do tablic

Post autor: MiChaSSs »

no wlasnie nie. Po wykonaniu skryptu nadal nie zostanie zapamietane (zapisane) w pliku. Tablica nadal bedzie wygladala tak:

[php]<?php
$tablica=array("jablko","gruszka");

?>[/php]

a nie tak:

[php]<?php
$tablica=array("jablko","gruszka";"banan");

?>[/php]
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [php] zapis do tablic

Post autor: Dreen »

alez mylisz sie!

taki kod:
[php]<?php
$tablica=array("jablko","gruszka");
$tablica[]="banan";
print_r($tablica);
?>[/php]
generuje cos takiego:

Kod: Zaznacz cały

Array ( [0] => jablko [1] => gruszka [2] => banan )
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] zapis do tablic

Post autor: wixor »

Przypominam, że twój skrypt modyfikuje tablicę, czyli obiekt w pamięci, a nie plik w którym tablica jest zdefiniowana (pisałeś coś o zapisie). Jeżeli chcesz stworzyć samomodyfikujący się skrypt PHP, to ostrzegam, że zadanie jest proste, acz nie banalne ;) . W zapisie do pliku ci nie pomogę.
MiChaSSs
Posty: 18
Rejestracja: czw cze 10, 2004 11:14 pm

Re: [php] zapis do tablic

Post autor: MiChaSSs »

Chyba mnie nie wszyscy do końca zrozumieli.

po wykonaniu czegoś takiego:
[php]<?php
$tablica=array("jablko","gruszka");
$tablica[]="banan";
print_r($tablica);
?>[/php]

jak wyświetlimy tablicę to bedzie ona wyglądała tak:

Array ( [0] => jablko [1] => gruszka [2] => banan )

Tutaj sie wszystko zgadza, tyle ze ja chcę tą zmodyfikowaną tablice (czyli z dodanym "bananem") zapamiętać, a po wykonaniu powyższego skryptu tablica tylko w trakcie wykonywania tego skryptu bedzie wygladała tak:

Array ( [0] => jablko [1] => gruszka [2] => banan )

natomiast gdy zajrzymy do pliku ze skryptem to tablica nadal bedzie wyglądała tak:

[php]<?php
....
$tablica=array("jablko","gruszka");
....
?>[/php]

a ja chciałbym aby po wykonaniu skryptu wyglądała tak:

[php]<?php
....
$tablica=array("jablko","gruszka","banan");
....
?>[/php]

(lub żeby tablice zapisywały sie w pliku "dane.txt", gdzie bedą również inne tablice, czyli np. będą w tym samym pliku 2 tablice)

Zawartość pliku "dane.txt"


[php]<?php
$tablica=array("jabłko","gruszka");
$tablica2=array("owoc","warzywo");
........
?>[/php]

Mam nadzieję ze wystarczająco jasno opisałem problem ;-). Pozdrawiam MiChaSSs
templar
Nowy
Nowy
Posty: 69
Rejestracja: ndz maja 16, 2004 3:19 pm
Lokalizacja: Kolbuszowa
Kontakt:

Re: [php] zapis do tablic

Post autor: templar »

o coś takiego ci chodzi?
[php]<?php
<?php
$nazwa_tablicy='tablica';
${$nazwa_tablicy}=array('jablko', 'gruszka');
${$nazwa_tablicy}[]='banan';

$kod='$' . $nazwa_tablicy . '=array(';
foreach (${$nazwa_tablicy} as $v)
{
$kod.='\'' . $v . '\', ';
}
$kod=substr($kod, 0, strlen($kod)-2) . ');';

$f=fopen('dane.txt', 'a');
fputs($f, $kod . "\n");
fclose($f);
?>
?>[/php]
MiChaSSs
Posty: 18
Rejestracja: czw cze 10, 2004 11:14 pm

Re: [php] zapis do tablic

Post autor: MiChaSSs »

eh templar_of_steel niestety to nie to. Ten Twoj skrypt za kazdym razem tworzy nową tablicę a ja chce aby dane byly dopisywane do juz istniejacej tablicy. Po wykonaniu Twojego skryptu 2 razy plik "dane.txt." wyglada tak:

[php]<?php
$tablica=array('jablko', 'gruszka', 'banan');
$tablica=array('jablko', 'gruszka', 'banan');
?>[/php]

Ja chciałbym aby do 1 tablicy sie tylko dopisywało czyli aby plik "dane.txt" wygladał załóżmy tak:

[php]<?php
$tablica=array('jablko', 'gruszka', 'banan','sliwka','pomarancza','mandarynka');
?>[/php]
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] zapis do tablic

Post autor: wixor »

Wiesz co, niemożliwie komplikujesz sprawę! zrób sobie plik owoce.dat i w każdej linii niech będzie jeden element twj twojej tablicy. Później za pomocą file() odczytujesz ten plik to tablicy w ten sposób, że jedna linia jest zawarta w jednym elemencie, usuwasz entery na końcu linii poprzez trim() i masz! czyli:[php]<?php
$tablica=array(); foreach(file("owoce.dat") as $line) $tablica[]=trim($line);
?>[/php] i po zabawie! Jak chcesz coś dodać to robisz: [php]<?php
$fd=fopen("owoce.dat","a");
fwrite($fd,"kokos"."\n");
fclose($fd);
?>[/php]
Wojciech Kocjan
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: sob gru 14, 2002 10:51 am

Re: [php] zapis do tablic

Post autor: Wojciech Kocjan »

wixor pisze:[php]<?php
$tablica=array(); foreach(file("owoce.dat") as $line) $tablica[]=trim($line);
?>[/php]
Piekny kod.. Nie prosciej:
[php]<?php
$tablica=file('owoce.dat');
// pozniej ew. przy wywolywaniu np. trim($tablica[3]);
?>[/php]Nie ma zadnego sensu 'przerabianie' tablicy na tablice.. Tylko wydluza sie czas wykonywania skryptu.
MiChaSSs
Posty: 18
Rejestracja: czw cze 10, 2004 11:14 pm

Re: [php] zapis do tablic

Post autor: MiChaSSs »

yhm spoko ;-) ale zakladamy ze ten element ktory pozniej bierzemy do tablicy jest dłuższy niz jedna linikja. Jak to zrobic ??
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] zapis do tablic

Post autor: wixor »

Wojtek Kocjan -> chciałem dać pełny równoważnik instrukcji MiChaSSs, więc trzeba było użyć trim-a. Poza tym, jeżeli wielokrotnie pobiera się element z tablicy, to lepiej go raz ztrimować niż za każdym razem prawda??
MiChaSSs -> Wybierz sobie jakiś znak (np. "~") i zamieniaj go na "\n" pętli przy trim-ie. Ew. użyj fscanf-a to skanowania pliku w poszukianiu ciągów "(.....)" i wtedy ogranicznikami tekst będą znaki ' " ' a to co jest między nimi będzei ignorowane. Ostatecznie, możesz użyć jako separatora pustej linii.
MiChaSSs
Posty: 18
Rejestracja: czw cze 10, 2004 11:14 pm

Re: [php] zapis do tablic

Post autor: MiChaSSs »

ok bardzo dziękuję za wszystkie dpowiedzi !! ;-) Pozdrawiam :D
ODPOWIEDZ