Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> roznica miedzy zwracanymi wartosciami TRUE a 1
Octobus
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

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


Mam skrypt który rozpakowuje zip'a i muszę sprawdzać czy rozpakowanie się udało. Mam więc
  1. if($rozpakuj = $zip->extractTo(dirname(__FILE__).'/') !== TRUE)
  2. die('nie udalo sie rozpakowac: '.$rozpakuj);


Natrafiłem w końcu na serwer na którym zamiast TRUE zwraca 1 więc łapie się na wykluczenie i wypluwa:
nie udalo sie rozpakowac: 1
jak teraz to sprytnie zrobic? Rozwiazanie pewnie jest banalne ale po tylu h chyba juz nie mysle ;/
Dzieje się tak przy nadpisaniu pliku. Sprawdzałem plik się nadpisuje poprawnie

Ten post edytował Octobus 5.12.2011, 21:45:53
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Rzutowanie typu
Kod
(boolean) $zip->extractTo(dirname(__FILE__).'/')


http://www.php.net/manual/en/language.type...boolean.casting

Ten post edytował skowron-line 5.12.2011, 22:06:28
Go to the top of the page
+Quote Post
Octobus
post
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

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


Dzięki kolego ale przedwczesnie sie cieszylem ;/
Kod
if($rozpakuj = (boolean) $zip->extractTo(dirname(__FILE__).'/') !== TRUE)

nadal zwraca
Cytat
nie udalo sie rozpakowac: 1

(IMG:style_emoticons/default/sad.gif)

Ten post edytował Octobus 5.12.2011, 22:26:02
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


PHP po prostu tak wyświetla zmienną booleanowską w tekście: http://ideone.com/f1gWn
Go to the top of the page
+Quote Post
Octobus
post
Post #5





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

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


Tak, wiem że to może być zarówno 1 jak i TRUE ale dla czego łapie się na ten warunek ?;/
  1. if($rozpakuj = (boolean) $zip->extractTo(dirname(__FILE__).'/') !== TRUE)
  2. die('nie udalo sie rozpakowac: '.$rozpakuj);
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Przypisanie wartości do zmiennej obejmij nawiasem - teraz do $rozpakuj przypisujesz wartość porównania.
2. $a = true; echo 'ala: ' . $a; // "ala 1"
Go to the top of the page
+Quote Post
Octobus
post
Post #7





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

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


Kod
$rozpakuj = (boolean) $zip->extractTo(dirname(__FILE__).'/');
        
    if($rozpakuj !== TRUE)
        die('nie udalo sie rozpakowac: '.$rozpakuj);

daje
Cytat
nie udalo sie rozpakowac:

:/
Go to the top of the page
+Quote Post
cudny
post
Post #8





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


  1. swtich(true) {
  2. case($rozpakuj === true):
  3. echo "true<br />";
  4. break;
  5. case($rozpakuj === 1):
  6. echo "jeden<br />";
  7. break;
  8. default:
  9. echo "nie jest ani 1 ani true<br />";
  10. }


napisz co ci to wypisze

Ten post edytował cudny 6.12.2011, 10:23:52
Go to the top of the page
+Quote Post
nospor
post
Post #9





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




Cytat
swtich(true) {
(IMG:style_emoticons/default/questionmark.gif)

  1. $rozpakuj = $zip->extractTo(dirname(__FILE__).'/');
  2. var_dump($rozpakuj);

var_dump zwraca zawsze to co dostaje. Po grzyba kombinować w jakieś switch i to na dodatek totalnie błędne
Go to the top of the page
+Quote Post
cudny
post
Post #10





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Nie będzie błędne, a chodzi o wyświetlenie mu co dokładnie zwróci funkcja.
Choć wiem, że true a nie 1
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




Cytat
$rozpakuj = (boolean) $zip->extractTo(dirname(__FILE__).'/');

if($rozpakuj !== TRUE)
die('nie udalo sie rozpakowac: '.$rozpakuj);

daje
Cytat
nie udalo sie rozpakowac:

:/
No to daje przecież poprawnie... extractTo zwrócił false i wszystko się zgadza. I przestan rzytować na boolean bo extractTo zwraca boolean.

Cudny ja się ciebie pytam po co to:
swtich(true) {
?
Go to the top of the page
+Quote Post
cudny
post
Post #12





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Chciałem koledze wyświetlić co dokładnie zwraca funkcja (IMG:style_emoticons/default/wink.gif)
To nie dla mnie (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




Cudny pytam się po raz kolejny:
switch(true)
Totalny bezsens. Do switch zapodaje się zmiennej a nie TRUE. TO zawsze jest prawdziwe. Robisz switch potem w case walisz warunki. Po co? To co zrobiles robi się IFem a nie switch.

Poza tym to zwraca zmienna to do tego sluzy VAR_DUMP() a nie zadne kombinowanie.


Co do problemu głównego:
na innnym serwerze nie udaje się rozpakować, stad masz takie rzeczy jakie masz.
Cytat
rozpakuj = (boolean) $zip->extractTo(dirname(__FILE__).'/');

if($rozpakuj !== TRUE)
die('nie udalo sie rozpakowac: '.$rozpakuj);

daje
Cytat
nie udalo sie rozpakowac:

To pokazuje wyraźnie, że nie można rozpakować.

Zaś to:
if($rozpakuj = $zip->extractTo(dirname(__FILE__).'/') !== TRUE)
die('nie udalo sie rozpakowac: '.$rozpakuj);
Daje ci w rezultacie 1 bo:
extractTo zwraca false. W efekcie masz taki warunek:
if($rozpakuj = false !== TRUE)
A to kolejnosc wykonywania:
1)false !== TRUE to daje true
2) if($rozpakuj =true)
3) warunek spelnionu, rozpakuj ma true w efekcie widzisz ze sie nie udalo i masz 1. Proste i logiczne
Chcesz miec prawidlowo, to uzyj nawiasow (o czym już dawno wspominał ci Crozin) a na przyszlosc poczytaj o kolejnosci wykonywania zadan
if(($rozpakuj = $zip->extractTo(dirname(__FILE__).'/')) !== TRUE)
die('nie udalo sie rozpakowac: '.$rozpakuj);

Czyli jeszcze raz na koniec:
na drugim serwerze poprostu nie udaje się rozpakować. Tyle w temacie.
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
cudny
post
Post #14





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(nospor @ 6.12.2011, 11:01:26 ) *
Cudny pytam się po raz kolejny bo widze nie kumasz:
switch(true)
Totalny bezsens. Do switch zapodaje się zmiennej a nie TRUE!!! TO zawsze jest prawdziwe. Robisz switch potem w case walisz warunki. Po co? Po co? To co zrobiles robi się IFem a nie switch.


(IMG:style_emoticons/default/wink.gif) zależy kto w jaki sposób korzysta z warunków.
Jeśli chodzi o instrukcje warunkową switch to bardzo ładnie mi porządkuje kod.

W tym wypadku jest to faktycznie do d..y ale zrobiłem to z przyzwyczajenia.
Zobacz jak ładnie można zwalidować dane pobrane z formularza:

  1. switch(true) {
  2. case(!isset($_POST['test'])):
  3. case(!is_array($_POST['test'])):
  4. case(empty($_POST['test'])):
  5. $error = true;
  6. break;
  7. default:
  8. $error = false;
  9. }


Ten post edytował cudny 6.12.2011, 11:07:19
Go to the top of the page
+Quote Post
nospor
post
Post #15





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




$error = !empty($_POST['test']) && is_array($_POST['test']) ? false : true;
(IMG:style_emoticons/default/tongue.gif)

Cytat
W tym wypadku jest to faktycznie do d..y ale zrobiłem to z przyzwyczajenia.
I o to mi chodziło. zwykły var_dump() i po sprawie.
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: 21.10.2025 - 08:09