Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] jak sprawdzic czy istnieje index w tablicy
styx
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


Pozdrawiam
Mam pytanie jak w prosty sposób sprawdzić czy istnieje jakiś indeks w tablicy. Tak aby nie pojawiał się błąd:

Notice: Undefined offset: 5 in /mnt/www/plik.php on line 372


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/manual/pl/function.isset.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
styx
post
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


isset pluje błąd taki jak napisałem powyżej, sprawdź sam jak nie wiezysz


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




smile.gif
To pokaz kod, bo moze nie umiejetnie uzywasz isset

Cytat
sprawdź sam jak nie wiezysz
No oczywiscie, juz pędze i bede sprawdzal dzialanie funkcji ktorej uzywam od 4 lat...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
styx
post
Post #5





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


troche dopisze
mam taki kawałek kodu:
  1. <?php
  2. for ($licznik=1;$licznik<=7;$licznik++) {
  3. $wiersz1 = $this->tablica[1][$licznik][1]['nazwa'];
  4. $wiersz2 = $this->tablica[1][$licznik][2]['nazwa'];
  5. ?>

i załózmy że dla $licznik=5 nie istnieje wymiar w tablicy jak to sprawdzić?


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. if (isset($this->tablica[1][$licznik])) ...
  3. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hwao
post
Post #7


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2. isSet( $aTablica[$mKlucz] )
  3. ?>

  1. <?php
  2. array_key_exists( $mKlucz, $aTablica )
  3. ?>


  1. <?php
  2. $wiersz1 = isSet( $this->tablica[1][$licznik][1]['nazwa'] ) ? $this->tablica[1][$licznik][1]['nazwa'] : 'domyslna wartosc - brak klucza'
  3. ?>
Go to the top of the page
+Quote Post
styx
post
Post #8





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


hwao: ok to jest dobre, tak stosowałem w innym miesjcu ale chciałem się spytać czy nie ma jednego polecenia

nospor: no ok ale wtedy musze zrobic wiecej takich ifów na kazdy poziom tablicy w kazdej iteracji, a nie ma jednego polecenia gdzie wrzuce całą tablica i da mi false albo true?


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. <?php
  2. for ($licznik=1;$licznik<=7;$licznik++) {
  3. if (isset($this->tablica[1][$licznik])) {
  4. $wiersz1 = $this->tablica[1][$licznik][1]['nazwa'];
  5. $wiersz2 = $this->tablica[1][$licznik][2]['nazwa'];
  6. }
  7. }
  8. ?>

PS: po co ci 4-wymiarowa tablica? Potrafisz to sobie wogóle wyobrazić? bo ja nie bardzo...

Co chcesz osiągnąć? Bo domyślam się, że samo przypisanie dla $wiersz1, $wiersz2 jest również złym posunięciem.

Ten post edytował phpion.com 23.08.2007, 11:26:18
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


~phpion.com coraz więcej mizernych średniaków bierze się za frameworki.
Piszesz dosłownie w każdej sprawie związanej z Symfony i prawie zawsze kończy się na tym, że czegos nie doczytałeś, albo nie zrozumiałeś z dokumentacji.
Już nawet raporty na te Twoje problemy z Symfony się pojawiają. Żadnego większego problemu nie jesteś w stanie rozwiązać sam tylko lecisz na forum.
Co byś teraz chciał usłyszeć? "Wróć do PHP3" ?

Wyluzuj więc.

Napisałem to żeby Ci uzmysłowić, że tak jak Ty teraz jedziesz tak i Tobie można pojechać.
Nie podoba Ci się czytanie przedszkola to nie rób tego i nie odpisuj. Nie musisz. Świat przetrwa bez Twojej interwencji.

P.S.
I niech to bedzie koniec prywatnych wycieczek.
Reszta między sobą bądź do mnie na PW
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




/*
usunięto - poniosło mnie
poprzedni post również wyedytowałem
*/

PS: dobra, koniec, buziak :*

Ten post edytował phpion.com 23.08.2007, 11:27:04
Go to the top of the page
+Quote Post
styx
post
Post #12





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


phpion.com

Zauważ że isset nie sprawdza się do tablicy, no owszem można stosować ale na kazdy wymiar tablicy
  1. <?php
  2. if (isset($this->tablica[1])) {
  3.  if (isset($this->tablica[1][$licznik])) {
  4.  if (isset($this->tablica[1][$licznik][1])) {
  5. if (isset($this->tablica[1][$licznik]['nazwa'])) {
  6. ?>

cos takiego rzeczywiscie będzie cziałało,

to jest naprawde złożona struktura,
to jest tylko kawałek kodu i objęcie jej tablicą jest najlepszym sposobem,
chociaż zastanawiam się nad uzyciem klasy

ale jak już napisałem pytanie brzmi, jak sprawdzic czy taka struktura istnieje: $this->tablica[1][$licznik]['nazwa'])
jeżeli np. brakuje ktregoś wymiaru i żeby to było jedno polecenie,
no i tylko o to chodzi nie zagłebiaj się już czy moje rozwiązanie jest ok


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hmmm rozumiem, że do budowy tej struktury używasz 4 pętli. Nie możesz w każdej z nich sprawdzać isset'em istnienia odpowiedniego indeksu tablicy?Swoją drogą: możliwe, że przydatne Ci będzie również is_array" title="Zobacz w manualu PHP" target="_manual
Cytat(styx @ 23.08.2007, 12:39:42 ) *
pytanie brzmi, jak sprawdzic czy taka struktura istnieje: $this->tablica[1][$licznik]['nazwa'])
  1. <?php if(isset($this->tablica[1][$licznik]['nazwa'])) ?>
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $ar[0][1][2]['nazwa'] = 2;
  3. if (!isset($ar[20][2][1]['ola'])) echo 'nie ma $ar[20][2][1][ola]<br />'; 
  4. if (!isset($ar[0][1][1]['nazwa'])) echo 'nie ma $ar[0][1][1][nazwa]<br />';
  5. ?>

Czy to ci wali bledem z isseta? no chyba nie. a sprawdzasz sobie wielopoziomowo. Nie wiem gdzie masz problem.
Mozesz tez uzyc empty(). Ono z zalozenia niczym nie pluje.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
styx
post
Post #15





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


nie chcę się kłucić bo pewnie coś źle robięale uważam że nie masz racji, masz pewnie mało restrykyjne ustawienia serwera i przez to Ci nie pluje błędów NOTICE, też mogę to wyłąćżyc i rzeczywiście wtedy to będzie działać ale przy ustawieniach:
  1. <?phperror_reporting (E_ALL|E_STRICT);ini_set('display_errors',true);?>
jest błąd uwież miempty zachowuje się tak samo,jedynym rozwiązaniem jest w takim razie array_key_exists() skoro nie istniej takie rozwiązanie, a może można jakoś te błedy przechwytywać try{}catch{}, ktoś wie?a propo użycie is_array ten sam problem


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ja mam takie samie ustawienia jak ty. Mi isset nie pluje zadnym bledem przy przykladzie co ci podalem. Tobie pluje? Mozesz pokazac jakim?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
styx
post
Post #17





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


nospor: przeczytaj sobie cały temat jeszcze raz

kurcze jestem cierpliwy wyjasnie jescze raz

jest taka tablica $this->tablica
Array
(
[1] => Array
(
[4] => Array
(
[1] => Array
(
[nazwa] => Dupa
)

)

)

)

i teraz do takiej tablicy zrob
  1. <?php
  2. if (isset($this->tablica[2][$licznik][1]['nazwa'];))
  3. ?>


i jeżeli rzeczywiscie masz takie same ustawienia to zobaczysz
dla mnie jest to logiczne


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
kurcze jestem cierpliwy wyjasnie jescze raz
kurcze, ja tez jestem cierpliwy. podalem ci przyklad i prosze cie bybs mi pokazal jakie masz bledy z tego przykladu. ciezko?
Jak ja mam twoje sprawdzic jak nie mam twojej klasy.... mysl troche. Przyklad mial odzwierciedlac Twoj problem. Pokaz mi wiec jego wynik a nie sie cierpliwujesz.

edit: a ten srednik to tak masz w pliku? nic dziwnego ze masz bledy...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
styx
post
Post #19





Grupa: Zarejestrowani
Postów: 138
Pomógł: 3
Dołączył: 21.11.2005

Ostrzeżenie: (0%)
-----


sorx zjebałem
sorx masz racje

Ten post edytował styx 23.08.2007, 12:56:14


--------------------
"Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 02:35