Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Nieoczekiwane działanie isset() i empty()
l0ud
post
Post #1





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Witam, napotkałem na pewien problem. Mam utworzony obiekt 'router' który ma za zadanie zwracać odpowiednie zmienne. Deklaruję taką metodę:
  1. <?php
  2. public function postVar($name) {
  3. if (isset($this->postArray[$name])) return $this->postArray[$name];
  4. else return null;
  5. }
  6. ?>


I teraz chcę sprawdzić, czy zwracana wartość nie jest pusta:

  1. <?php
  2. if (empty($router->postVar('submit'))) {
  3. echo 'pusta';
  4. }
  5. else {
  6. echo 'jest';
  7. }
  8. ?>


Powyższy kod nie wygeneruje żadnego błędu, ale spowoduje wyświetlenie się pustej strony. Będzie ona pusta nawet wtedy, gdy przed całym warunkiem dodam jakieś echo.
Poniższy kod działa:
  1. <?php
  2. $submit = $router->postVar('submit');
  3.  
  4. if (empty($submit)) {
  5. echo 'pusta';
  6. }
  7. else {
  8. echo 'jest';
  9. }
  10. ?>

Nie mam pojęcia dlaczego tak się dzieje, dla mnie to trochę nielogiczne jest. (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) Pewnie po prostu czegoś nie rozumiem, ale nie mogę samodzielnie tego uzasadnić...
Dodaję log do wincachegrind, jeżeli pomoże on w rozwiązaniu problemu: http://www.sendspace.pl/file/LGfYFlka/

Proszę o pomoc i pozdrawiam

Ten post edytował l0ud 30.04.2008, 15:28:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bim2
post
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Ja polece zrobienie
$router->postIsset('submit');
  1. <?php
  2. function postIsset($sName)
  3. {
  4. return isset($sName);
  5. }
  6. ?>


Wygodnie się wtedy pisze (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował bim2 30.04.2008, 15:59:07
Go to the top of the page
+Quote Post
cbagov
post
Post #3





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

Ostrzeżenie: (10%)
X----


@bim2 Obawiam sie, ze tak 'sprawdzalbys' stan slowa ['submit']
a l0ud trzyma wartosci w tablicy



[quote name='bim2' date='30.04.2008, 16:58:52 ' post='466812']
Ja polece zrobienie
$router->postIsset('submit');

function postIsset($sName)
{return isset($sName);}

Ten post edytował cbagov 30.04.2008, 16:29:45
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 10:46