🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
21 messages
21 total messages Started by jivanmukta Sun, 21 Jun 2015 16:02
if ($x) - co to właściwie znaczy? (newbie)
#231033
Author: jivanmukta
Date: Sun, 21 Jun 2015 16:02
6 lines
1396 bytes
Uczę się PHP5 i mam proste pytanie. Co właściwie znaczy instrukcja:

  if ($x) { ... }

Czy ten test jest równoważny ((bool)$x) czy (!empty($x)) a może ($x !== false).
(Nie wiem jak to prosto sprawdzić). Byłbym wdzięczny za odpowiedź.
Re: if ($x) - co to właściwie znaczy? (newbie)
#231034
Author: jivanmukta
Date: Sun, 21 Jun 2015 16:04
3 lines
1313 bytes
W C takie coś znaczyło 
  if (x != 0)
ale jak jest w PHP5 to nie wiem.
Re: if ($x) - co to właściwie znaczy? (newbie)
#231039
Author: artiun
Date: Sun, 21 Jun 2015 16:18
15 lines
2228 bytes
W dniu 2015-06-21 o 18:02, jivanmukta@poczta.onet.pl pisze:
> Uczę się PHP5 i mam proste pytanie. Co właściwie znaczy instrukcja:
>
>    if ($x) { ... }
>
> Czy ten test jest równoważny ((bool)$x) czy (!empty($x)) a może ($x !== false).
> (Nie wiem jak to prosto sprawdzić). Byłbym wdzięczny za odpowiedź.
>
w nawiasie jest wyrażenie które zwraca true lub false, 0, 1. Może byś np. 
string "" taki lub taki "ala".

-- 
Artur
0 weeks 0 days 8 hours 1 minute 33 seconds and 267 milliseconds.
"pl.comp.lang.php"
Re: if ($x) - co to właściwie znaczy? (newbie)
#231040
Author: jivanmukta
Date: Sun, 21 Jun 2015 17:06
5 lines
1558 bytes
> w nawiasie jest wyrażenie które zwraca true lub false, 0, 1. Może byś np. 
> string "" taki lub taki "ala".

Czyli równoważne: if ((bool)$x), tak?
Wiem co robi if. Chodzi mi o semantykę testu wewnątrz if'a gdy $x nie jest typu  bool.
Re: if ($x) - co to właściwie znaczy? (newbie)
#231041
Author: artiun
Date: Sun, 21 Jun 2015 17:32
18 lines
2495 bytes
W dniu 2015-06-21 o 19:06, jivanmukta@poczta.onet.pl pisze:
>> w nawiasie jest wyrażenie które zwraca true lub false, 0, 1. Może byś np.
>> string "" taki lub taki "ala".
>
> Czyli równoważne: if ((bool)$x), tak?
> Wiem co robi if. Chodzi mi o semantykę testu wewnątrz if'a gdy $x nie jest typu  bool.
>
podałem: if (""), zresztą 0 i 1 też nie jest bool. Tak naprawdę to kilka 
linijek teksu lub czytanie dokumentacji ze zrozumieniem. == znaczy coś 
innego niż ===. Bo jeśli zrobię if(""===0) to co, co jeśli if("0"==0) i 
dalej co dla if ( "0"===0)?
Warto sprawdzić, bo w tym wypadku zachowania php pamięta się długo.


-- 
Artur
0 weeks 0 days 9 hours 12 minutes 3 seconds and 478 milliseconds.
"pl.comp.lang.php"
Re: if ($x) - co to właściwie znaczy? (newbie)
#231042
Author: platformowe głupki
Date: Sun, 21 Jun 2015 17:38
2 lines
1210 bytes
z moich testów wynika, że w php coś takiego "abc"=="abc"
wcale nie działa... tak?
Re: if ($x) - co to właściwie znaczy? (newbie)
#231035
Author: artiun
Date: Sun, 21 Jun 2015 17:44
17 lines
2258 bytes
W dniu 2015-06-21 o 18:04, jivanmukta@poczta.onet.pl pisze:
> W C takie coś znaczyło
>    if (x != 0)
> ale jak jest w PHP5 to nie wiem.
>
>

$x może zawierać wszystko (jakikolwiek typ danych). Pewnie by przyjął dla 
wszystkich pseudo typów. NULL=0 też by przyjął. Jest jednak pewne ale, 
dlatego, że nie ma typowania zostały wprowadzone operatory: !== === 
wymuszające sprawdzanie typów. Wg znaczników ", '', 1.0, 2, typów: class...


-- 
Artur
0 weeks 0 days 9 hours 22 minutes 19 seconds and 423 milliseconds.
"pl.comp.lang.php"
Re: if ($x) - co to właściwie znaczy? (newbie)
#231043
Author: grzessiek
Date: Sun, 21 Jun 2015 17:59
14 lines
1276 bytes
W dniu 2015-06-21 o 18:02, jivanmukta@poczta.onet.pl pisze:
> Uczę się PHP5 i mam proste pytanie. Co właściwie znaczy instrukcja:
>
>    if ($x) { ... }

to jest dobre pytanie, i nie jest takie proste. tzn. nie jest proste w 
kontekście PHP.

generalnie, taka instrukcja powinna sprawdzać, czy $x === true.

ale w rzeczywistości jest tak, że jeżeli $x !== false, to $x = true, 
nawet jeżeli $x = 'Ala ma kota';

g.
Re: if ($x) - co to właściwie znaczy? (newbie)
#231044
Author: Borys Pogoreło
Date: Sun, 21 Jun 2015 19:01
22 lines
1666 bytes
Dnia Sun, 21 Jun 2015 19:59:56 +0200, grzessiek napisał(a):

>> Uczę się PHP5 i mam proste pytanie. Co właściwie znaczy instrukcja:
>>
>>    if ($x) { ... }
> 
> to jest dobre pytanie, i nie jest takie proste. tzn. nie jest proste w 
> kontekście PHP.
> 
> generalnie, taka instrukcja powinna sprawdzać, czy $x === true.

W sumie to chyba sprawdza (bool) $x === true, ale takie warunki w PHP to
jest jedno wielkie WTF i łatwo sobie w stopę strzelić.

I jeszcze do autora: uważaj na empty(), bo ta funkcja ma bardzo luźne
podejście do sprawdzanej wartości i można się przejechać w niektórych
sytuacjach. Przykładowo jeśli spodziewasz się nie-pustego pola, a ktoś
wprowadzi "0", to nie przepuści.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: if ($x) - co to właściwie znaczy? (newbie)
#231036
Author: marfi
Date: Sun, 21 Jun 2015 19:26
9 lines
1357 bytes
Użytkownik <jivanmukta@poczta.onet.pl> napisał w wiadomości 
news:0e18bd3d-a0d5-491b-b3cb-9262466ffd13@googlegroups.com...
...
>ale jak jest w PHP5 to nie wiem.

To po co odpowiadzsz - zajmij się ekologiczną chodowlą królików.

-- 
marfi
Re: if ($x) - co to właściwie znaczy? (newbie)
#231045
Author: jivanmukta
Date: Mon, 22 Jun 2015 08:30
18 lines
1947 bytes
> I jeszcze do autora: uważaj na empty(), bo ta funkcja ma bardzo luźne
> podejście do sprawdzanej wartości i można się przejechać w niektórych
> sytuacjach. Przykładowo jeśli spodziewasz się nie-pustego pola, a ktoś
> wprowadzi "0", to nie przepuści.

Dzięki, zapomniałem o tym. Czyli muszę zmienić kod:

public function isEmptyField($field) {
    $val = trim($this->ci->input->post($field));
    return empty($val);
}

na kod:

public function isEmptyField($field) {
    $val = trim($this->ci->input->post($field));
    return $val == '';
}
Re: if ($x) - co to właściwie znaczy? (newbie)
#231046
Author: Borys Pogoreło
Date: Mon, 22 Jun 2015 11:07
15 lines
1431 bytes
Dnia Mon, 22 Jun 2015 01:30:42 -0700 (PDT), jivanmukta@poczta.onet.pl
napisał(a):

> public function isEmptyField($field) {
>     $val = trim($this->ci->input->post($field));
>     return $val == '';
> }

Używaj od razu właściwych operatorów. Albo (string) $val === '' albo ew.
strlen((string) $val) == 0. Akurat w tym przypadku nie powinno mieć to
wpływu, ale warto tego pilnować.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: if ($x) - co to właściwie znaczy? (newbie)
#231037
Author: jivanmukta
Date: Mon, 22 Jun 2015 16:25
5 lines
1768 bytes
> To po co odpowiadzsz 
Nie odpowiadam, jestem autorem zapytania.

> zajmij się ekologiczną chodowlą królików.
Jestem wegetarianinem. Pisze się "hodowla" a nie "chodowla".
Re: if ($x) - co to właściwie znaczy? (newbie)
#231053
Author: Rafal Podsiadly
Date: Mon, 22 Jun 2015 16:53
2 lines
1537 bytes
w sumie if rzutuje zmienną na (bool) więc w zależności jak ta zmienna funkcjonuje to taki warunek zostanie do niej przekazany
http://php.net/manual/en/control-structures.if.php
Re: if ($x) - co to właściwie znaczy? (newbie)
#231047
Author: jivanmukta
Date: Thu, 09 Jul 2015 15:25
16 lines
2176 bytes
W dniu niedziela, 21 czerwca 2015 21:01:45 UTC+2 użytkownik Borys Pogoreło napisał:
> I jeszcze do autora: uważaj na empty(), bo ta funkcja ma bardzo luźne
> podejście do sprawdzanej wartości i można się przejechać w niektórych
> sytuacjach. Przykładowo jeśli spodziewasz się nie-pustego pola, a ktoś
> wprowadzi "0", to nie przepuści.

Napisałem taką funkcję:

// działa dla wyrażeń i is_empty('0') === FALSE:
function is_empty($val) {
    if ($val === '0') return FALSE;
    return empty($val);
}

i korzystam z niej dla wartości z bazy i pochodzących z formularzy.
Czy to ma sens?
Re: if ($x) - co to właściwie znaczy? (newbie)
#231048
Author: artiun
Date: Thu, 09 Jul 2015 18:49
22 lines
2556 bytes
W dniu 2015-07-09 o 17:25, jivanmukta@poczta.onet.pl pisze:
> W dniu niedziela, 21 czerwca 2015 21:01:45 UTC+2 użytkownik Borys Pogoreło napisał:
>> I jeszcze do autora: uważaj na empty(), bo ta funkcja ma bardzo luźne
>> podejście do sprawdzanej wartości i można się przejechać w niektórych
>> sytuacjach. Przykładowo jeśli spodziewasz się nie-pustego pola, a ktoś
>> wprowadzi "0", to nie przepuści.
>
> Napisałem taką funkcję:
>
> // działa dla wyrażeń i is_empty('0') === FALSE:
> function is_empty($val) {
>      if ($val === '0') return FALSE;
>      return empty($val);
> }
>
> i korzystam z niej dla wartości z bazy i pochodzących z formularzy.
> Czy to ma sens?
>
Nie. To działa, ale nie ma sensu budować protez.

-- 
Artur
Re: if ($x) - co to właściwie znaczy? (newbie)
#231049
Author: jivanmukta
Date: Thu, 09 Jul 2015 20:13
4 lines
1624 bytes
W dniu czwartek, 9 lipca 2015 20:53:36 UTC+2 użytkownik artiun napisał:
> nie ma sensu budować protez.

dlaczego?
Re: if ($x) - co to właściwie znaczy? (newbie)
#231051
Author: Borys Pogoreło
Date: Fri, 10 Jul 2015 11:21
18 lines
1482 bytes
Dnia Thu, 9 Jul 2015 08:25:51 -0700 (PDT), jivanmukta@poczta.onet.pl
napisał(a):

> // działa dla wyrażeń i is_empty('0') === FALSE:
> function is_empty($val) {
>     if ($val === '0') return FALSE;
>     return empty($val);
> }
> 
> i korzystam z niej dla wartości z bazy i pochodzących z formularzy.
> Czy to ma sens?

Nie, to jest typowe "the PHP way". Za chwilę będziesz musiał dodać
is_really_empty() dla kolejnego przypadku.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: if ($x) - co to właściwie znaczy? (newbie)
#231038
Author: szemrany
Date: Fri, 10 Jul 2015 14:25
13 lines
1394 bytes
On Sun, 21 Jun 2015 21:26:49 +0200, marfi wrote:

>>ale jak jest w PHP5 to nie wiem.
> 
> To po co odpowiadzsz - zajmij się ekologiczną chodowlą królików.

Przyganiał kocioł garnkowi - rzec by się chciało.

-- 
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
Re: if ($x) - co to właściwie znaczy? (newbie)
#231052
Author: Rafal Podsiadly
Date: Mon, 27 Jul 2015 06:09
39 lines
3409 bytes
W dniu piątek, 10 lipca 2015 13:21:12 UTC+2 użytkownik Borys Pogoreło napisał:
> Dnia Thu, 9 Jul 2015 08:25:51 -0700 (PDT), jivanmukta@poczta.onet.pl
> napisał(a):
> 
> Nie, to jest typowe "the PHP way". Za chwilę będziesz musiał dodać
> is_really_empty() dla kolejnego przypadku.
> 
> -- 
> Borys Pogoreło
> borys(#)leszno,edu,pl

Na samym początku ktoś ci napisał że jest to ciąg wyrażeń którego wynikiem ma być TRUE lub FALSE 
TRUE to liczba != 0
TRUE to ciąg znaków, którego długość jest większa niż > 0
TRUE to tablica która ma więcej niż 0 elementów 
TRUE to także NULL

print_r("Test \r\n");

var_dump(array(
    '0' => 0,
    '(bool)0'  => (bool)0,
    'empty(0)' => empty(0),
    'is_null(0)' => is_null(0),
    'null' => null,
    'null' => empty(null),
));

Więc w pierwszej kolejności zastanów się jakiego typu dane otrzymujesz i co będziesz obrabiał. Następnie jeśli wynikiem warunku ma być if (x = true) {}
Wtedy pod x = podstawiamy nasz warunek
x = (jakas_zmienna != 0 && empty(jakas_zmienna) && is is_numeric(jakas_zmienna)

Ogólnie budujesz wyrażenie logiczne && łączysz je i tutaj haczyk to wyrażenie jest wykonywane do pierwszego wystąpienia ELSE, więc każde z sprawdzań będzie przetworzone jeśli poprzednie zwróciło true, jeśli jedno z nich zwróciło false to przerywa.
if ( ($x = oblicz_wynik()) && isset($x) && is_numeric($x) && $x > 0 ) to zadanie wykona sie prawidlowo do pierwszego wystąpienia else po prostu musisz wiedzieć co robi program.

 
Różnica następuje gdy używasz OR "||" tutaj warunek wykonywany jest to pierwszego wystąpienia TRUE więc jeśli na przykład coś liczysz w if a później korzystasz z tego w ciele {} to wielce prawdopodobne że dostaniesz za którymś razem zmienna nie istnieje.

zastanów się co chcesz osiągnąć. Na serio warto trochę się dowiedzieć jak wyglądają wyrażenia logiczne i jak można z nimi eksperymentować.
Re: if ($x) - co to właściwie znaczy? (newbie)
#231050
Author: Rafal Podsiadly
Date: Mon, 27 Jul 2015 06:15
35 lines
3368 bytes
W dniu czwartek, 9 lipca 2015 22:13:46 UTC+2 użytkownik jivan...@poczta.onet.pl napisał:
> W dniu czwartek, 9 lipca 2015 20:53:36 UTC+2 użytkownik artiun napisał:
> > nie ma sensu budować protez.
> 
> dlaczego?


Na samym początku ktoś ci napisał że jest to ciąg wyrażeń którego wynikiem ma być TRUE lub FALSE 
TRUE to liczba != 0 
TRUE to ciąg znaków, którego długość jest większa niż > 0 
TRUE to tablica która ma więcej niż 0 elementów 
TRUE to także NULL 

print_r("Test \r\n"); 

var_dump(array( 
    '0' => 0, 
    '(bool)0'  => (bool)0, 
    'empty(0)' => empty(0), 
    'is_null(0)' => is_null(0), 
    'null' => null, 
    'null' => empty(null), 
)); 

Więc w pierwszej kolejności zastanów się jakiego typu dane otrzymujesz i co będziesz obrabiał. Następnie jeśli wynikiem warunku ma być if (x = true) {} 
Wtedy pod x = podstawiamy nasz warunek 
x = (jakas_zmienna != 0 && empty(jakas_zmienna) && is is_numeric(jakas_zmienna) 

Ogólnie budujesz wyrażenie logiczne && łączysz je i tutaj haczyk to wyrażenie jest wykonywane do pierwszego wystąpienia FALSE, więc każde z sprawdzań będzie przetworzone jeśli poprzednie zwróciło true, jeśli jedno z nich zwróciło FALSE to przerywa. 
if ( ($x = oblicz_wynik()) && isset($x) && is_numeric($x) && $x > 0 ) to zadanie wykona sie prawidlowo do pierwszego wystąpienia FALSE po prostu musisz wiedzieć co robi program. 

  
Różnica następuje gdy używasz OR "||" tutaj warunek wykonywany jest to pierwszego wystąpienia TRUE więc jeśli na przykład coś liczysz w if a później korzystasz z tego w ciele {} to wielce prawdopodobne że dostaniesz za którymś razem zmienna nie istnieje. 

zastanów się co chcesz osiągnąć. Na serio warto trochę się dowiedzieć jak wyglądają wyrażenia logiczne i jak można z nimi eksperymentować.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads