![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam na stronie następujący skrypt wypisujący na ekranie kilka linijek odpowiedzi dowolnej komendy powłoki Linux. exec("polecenie",$wyj); for ($i=0; $i < count($wyj); $i++) {print($wyj[$i]."\n");}; Zakładając, że odpowiedź ma 5 linijek. Czy mógłbym jakoś nie wyświetlać na przykład 4tej linijki?. Proszę o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
ehhh .. rzeczywiście proste
![]() Dziękuję. ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 15 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Robicie jeden podstawowy blad i jeszcze tego nie zauwazacie na stronie.
Przypuscmy, ze masz te swoja tablice zbudowana tak :
Czyli masz 5 komorek w tabeli tak ? Teraz robiac tak : kazesz skryptowi wyswietlic tak na prawde 6 komorek bo count zwraca Ci liczbe 5, a Ty robisz petle od 0 wiec wyswietlasz komorki 0, 1, 2, 3, 4, 5 . Liczac od poczatku wychodzi 6 komorek. Nie lepiej zrobic tak ? : |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Robiąc tak jak mówisz, ominiesz ostatni element tablicy.
-------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Robicie jeden podstawowy blad i jeszcze tego nie zauwazacie na stronie. Lepiej pomyśl chwilę kolego zanim wytkniesz komuś błąd ![]() count zwraca całkowitą liczbę elementów w tablicy, a nie ostatni index, więc dla takiej tablicy jaką podałeś:
count($wyj) będzie równe 5. W warunku sprawdzamy, licząc od 0, czy $i jest mniejsze od count($wyj) (mniejsze, nie mniejsze lub równe). Więc wszystko będzie w porządku, warunek będzie spełniony dla 0, 1, 2, 3, 4 (dla 5 już nie bo 5 nie jest mniejsze od 5). Nie lepiej zrobic tak ? : Nie, nie lepiej bo wtedy nie wypiszesz ostatniego elementu tablicy. count($wyj) - 1 = 4, warunek jest spełniony dla 0, 1, 2, 3 (a gdzie czwarty element tablicy?). Jeżeli już to musiał byś dać tak: |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
~Void
A jak tym drugim sposobem z odejmowaniem od count wytniesz coś ze środka? W ogóle nie prościej wywalić ten element? unset + przelecieć foreach -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
~Void A jak tym drugim sposobem z odejmowaniem od count wytniesz coś ze środka? Tak jak tamtym, tylko trzeba by dodać w ifie 1 do indeksu tablicy ![]() ![]() |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 15 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
fifi ja nie pisalem o metodzie. Tylko przesledzcie to co napisalem.
Metode juz ktos tutaj podal. Zreszta jak juz wspomnial moj poprzednik tez blednie bo trzeba od oidjac tez jeden. Indexowanie tablicy zaczyna sie od zeraPomysl z forech chyba jest nawet lepszy. Podalem konkretny przyklad i zaden element nie zostanie pominiety jak ktos tu zauwazyl . Przesledz kolego dokladnie dzialanie i zobaczysz, ze wszystkie elementy zostana wziete pod uwage, jesli oczywiscie jak bozia przykazala bedziesz zapisywac elementy w tablicy od indexu=0 w zwyz. Zreszta na zdrowy rozum i logicznie rozumujac. Powtorze sie, ale co mi tam ... 0 - element 1 1 - element 2 2 - element 3 teraz wykonujesz count i dostajesz wynik 3 wykonujac petle : wykonujesz ja 4 razy ![]() Czyli 0, 1, 2, 3 ... Tu sa 4 elementy a w tablicy zapamietales 3 wiec o jeden wyswietlasz wiecej ... Stad to moje Najlepiej to jest przesledzic na przykladzie najprostszym jaki moze byc wiec dla leniwych prosze bardzo do skopiowania i wklejenia do edytorka:
Wynik :
I jest wyswietlana prawidlowa ilosc elementow, a jakby nie bylo -1 ?
wynik :
Dlaczego pisze jak bozia przykazala ? Wystarczy usunac index z tablicy ...
Efekt za kazdym razem bedzie taki sam. Powodzonka. Ten post edytował CyberDuck_ 22.09.2009, 08:38:11 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Zreszta na zdrowy rozum i logicznie rozumujac. Powtorze sie, ale co mi tam ... 0 - element 1 1 - element 2 2 - element 3 teraz wykonujesz count i dostajesz wynik 3 wykonujac petle : wykonujesz ja 4 razy ![]() Czyli 0, 1, 2, 3 ... Tu sa 4 elementy a w tablicy zapamietales 3 wiec o jeden wyswietlasz wiecej ... Stad to moje Najlepiej to jest No tak, tu masz rację, tylko wróć do swojego poprzedniego posta i sprawdź czy na pewno tak samo napisałeś ![]() Nie lepiej zrobic tak ? : Odjąłeś 1 od wartości count(), ale przy tym użyłeś w warunku znaku < a nie <=. W tym przypadku mając 4-elementową tablicę byłoby tak: indeksy tablicy: 0, 1, 2, 3 count(tablica) = 4 count(tablica)-1 = 3 warunek: $i < (count(tablica) - 1) spełniony dla indeksów mniejszych od 3, czyli tylko dla elementów o indeksach 0, 1, 2. A gdzie indeks 3? ![]() Żeby warunek był spełniony dla wszystkich elementów trzeba postawić ten znak <= lub zostawić znak <, ale wtedy nie odejmować jedynki (wyjdzie na to samo). Ten post edytował Void 22.09.2009, 15:28:48 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 15 Dołączył: 17.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Racja ...
Przepraszam. Zwykla pomylka, ale dobre, ze wiadomo o co juz chodzi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:47 |