Skocz do zawartości

Zmienna A zalezna od zmiennej B wczytywanie zmiennych tablicowych z plików


ghacek

Rekomendowane odpowiedzi

Mam problem i nie wiem jak to ująć w ramy programowe. Otóż mam dwa pliki txt. Plik A.txt i plik B.txt, obydwa te pliki wczytywane są przez skrypt jako tablice funkcją file(nazwa_pliku)

$plikA = file ('A.txt');
$plikB = file ('B.txt');

W pliku A.txt mam wypisaną różną ilość rekordów (każdy w osobnej linijce) oddzieloną znakami '::' raz jest to 10 rekordów innym razem 5 rekordów. Wygląda mniej więcej tak:

rekord0

rekord1

rekord2

::

rekord3

rekord4

::

rekord5

W pliku B.txt mam także rekordy chodzi mi o to aby rekord z pliku B.txt inkrementował się o 1 w momencie napotkania znaku '::' w pliku A.txt w innym przypadku tablica wskazująca na rekord powinna być równy ilości inkrementacji do tej pory dokonanych na rekordach z pliku B.txt

Programista aplikacji webowych i pozycjoner w Edukey - Szkolenia komputerowe | programowanie w VBA

Polecam dobry i tani hosting w firmie masternet

logo-edukey-twojaeuropa.png

Odnośnik do komentarza
Udostępnij na innych stronach

Nie ma pojęcia co masz na myśli "inkrementował się o 1 w momencie napotkania znaku '::'"

Wczytujesz do tablicy zawartość pliku A.txt

przechodzisz w pętli foreach przez tablicę i szukasz wystąpienia ::

jeśli jest wykonujesz jakieś operacje na drugiej tablicy no dodajesz element

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

OK może zaprezentuje to co mam w pliku:

<?php
global $licznik1;

/****************FUNKCJA 1 ZWROC********************/
function zwroc($plik) { 			 //funkcja inkrementujaca wartosc o 1 i zapisujaca to wartosc w pliku, funkcja zwraca ta wartosc
global $ids;

$zmienna = file($plik); 

(int)$zmienna[0];
	 for ($i=$zmienna[0]; $i<$zmienna[0]+1; $i++) { 
	 }


$otworz = @fopen($plik, 'w+'); //wskaznik na poczatku pliku
if ($otworz) {
rewind ($otworz); //przesuwa wskaznik na poczatek pliku aby nadpisac poprzednia wartosc
$zapisz = fwrite($otworz, $i); //zapisuje w pliku ile wyslal emiali
$zamknij = fclose ($otworz);
return $i; //zwraca ilosc zapisanych ID
}
else {
echo 'Nie mogę przeczytać pliku ' . $plik;
exit;
}
}	
/****************FUNKCJA 1 ZWROC********************/



/****************FUNKCJA 2 ZWROC1********************/
function zwroc1($plik) { 			 //funkcja oczytujaca ilosc obsluzonych katalogow

$zmienna = file($plik); 

(int)$zmienna[0];

 return $zmienna[0]; //zwraca ilosc obsluzonych katalogow
}
/****************FUNKCJA 2 ZWROC1********************/   


$baseUrl = file("A.txt");
// wczytujemy liste danych do tablicy

// wczytujemy listę numerow ID
$ids = file("B.txt");
$ids1 = zwroc('ile.txt');
for($i=0, $j=count($ids); $i<$j; $i++)
{

if ($ids1 == '' || $ids1 == 0)  {$licznik1=0; echo 'Licznik rowny 0';}	 //WARUNEK0

if ($ids[$ids1]=='::') {		 //WARUNEK1 jesli napotkamy znak '::' wywolujemy funkcje inkrementowania o 1 i zapisania wartosci w pliku zewnetrznym ile1.txt
$licznik1 = zwroc('ile1.txt');
$baseUrl[$licznik1];
echo ':: <br>';
}
else {
$licznik1 = zwroc1('ile1.txt');  //WARUNEK2 w innym przypadku po prostu odczytujemy wartosc z pliku ile1.txt 
$baseUrl[$licznik1];
}

echo 'Wartosc q dla Ids i to ' . $ids[$ids1] . '<br>';  //to wyswietla sie OK
echo 'Licznik1 to ' . $licznik1 . '<br>'; //pobiera wartosc z pliku ale nie zmienia sie kiedy napotka WARUNEK1

//jakies inne instrukcje
?>

Programista aplikacji webowych i pozycjoner w Edukey - Szkolenia komputerowe | programowanie w VBA

Polecam dobry i tani hosting w firmie masternet

logo-edukey-twojaeuropa.png

Odnośnik do komentarza
Udostępnij na innych stronach

Nie che mi się analizować, ale zainteresuj się funkcjami:

file() do wczytania danych do tablicy array();

foreach(), lub count() + for() do przejścia przez tablicę;

Ewentualnie funkcje obsługi tablic do dalszych operacji. Jakich to już musisz sam wiedzieć, bo dla mnie to co ty kombinujesz to szara magia :D

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Problem rozwiązany:)

Generalnie chodziło o to:

if ([b]trim[/b]($ids[$ids1])=='::')

(int)$zmienna[0];

for ($i=$zmienna[0]; $i<$zmienna[0]+1; $i++) {

}

A co to za cudo w pierwszej Twojej funkcji

to zamo da $i=$zmienna[0]+1

No niby tak choć akurat na szybkości w tym przypadku to różnica prawie żadna

Programista aplikacji webowych i pozycjoner w Edukey - Szkolenia komputerowe | programowanie w VBA

Polecam dobry i tani hosting w firmie masternet

logo-edukey-twojaeuropa.png

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności