Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
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
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
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




(IMG:http://forum.php.pl/style_emoticons/default/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...
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ć?
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. ?>
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?
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
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.
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
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?
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
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...
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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 13:04