2009-10-05 9 views
12

Ja próbując rozwiązać problem, i trzeba zrozumieć, co to if mówi:Instrukcja php if z jednym równym znakiem ...? Co to znaczy?

if ($confirmation = $payment_modules->confirmation()) { 

Wszystkie zasoby mogę znaleźć pokazać tylko wtedy, gdy sprawozdanie z podwójnymi znakami równości, a nie pojedyncze. Czy jest to jedna ze skróconych form php, jeśli? Co to robi?

(Jeśli w rzeczywistości jest to nieprawidłowa składnia, zmiana tego ustawienia na podwójny znak równości nie rozwiązuje problemu, ponieważ w niektórych sytuacjach jest zwracana wartość true. W scenariuszu, w którym rozwiązuję problem, nie zwraca on prawda, aż po odświeżeniu przeglądarki.)

Każda pomoc jest bardzo doceniana !!!

+0

Dziękuję wszystkim za WSPANIAŁE szybkie odpowiedzi !!! Wow, nie mogę ci powiedzieć, jak odświeżające jest otrzymanie szybkich i pomocnych odpowiedzi w środku sterty frustracji! Poniżej skomentowałem te, których użyłem do tej pory. Dzięki! – FrustratedPHPnovice

Odpowiedz

17

Jest to forma skrót, który jest dokładnie równoważny do tego:

$confirmation = $payment_modules->confirmation(); 
if ($confirmation) { 

} 
+0

Doskonały, dzięki! To mogę zrozumieć! Teraz, aby dowiedzieć się, dlaczego $ payment_modules-> confirmation() jest puste, dopóki nie odświeżę przeglądarki ... – FrustratedPHPnovice

+0

@FrustracjaPHPnovice kliknij znacznik wyboru obok tej odpowiedzi, aby ją zaakceptować –

+0

tak! ;) hehehe – nickf

0

= oznacza przypisanie ($ a = 1), == służy do porównania (true == false to false). Myślę, że w twoim przykładzie powinien on używać =, ponieważ przypisuje go do wartości zwracanej potwierdzenia, która powinna być wartością, która zwraca wartość true.

Spróbuj to zrobić var_dump:

var_dump($payment_modules->confirmation()); 

Zobacz co boolean ocenia się, a stamtąd można rozwiązać. Napisz więcej kodu, jeśli potrzebujesz dodatkowej pomocy.

class test() { 
    public function confirmation() { return true; } 
} 

$boolean = test::confirmation(); 
var_dump($boolean); 

będzie równoznaczny z true

+0

Pomógł też pomysł var_dump. Przed odświeżeniem jest puste i wypełnione treścią tablicy po odświeżeniu. Dziękujemy za super szybką odpowiedź i ofertę większej pomocy. Pozwól mi wziąć te informacje i trochę szybciej. – FrustratedPHPnovice

0

Czasami ludzie lubią robić zadanie, a następnie sprawdzić, czy przypisanie przeszedł w porządku. Połącz to z funkcjami, które zwracają wartość false (lub równoważną) w przypadku niepowodzenia, a Ty możesz wykonać zadanie i sprawdzić w tym samym czasie.

Aby to zrozumieć, należy pamiętać, że przypisania są rodzajem wyrażenia, więc (podobnie jak wszystkie wyrażenia) mają wartość zwracaną. Ta zwracana wartość jest równa temu, co zostało wstawione do zmiennej. Dlatego można zrobić coś jak

a = b = c = 0;

przypisanie wszystkich tych zmiennych jednocześnie.

7

Najpierw przypisze to $payment_modules->confirmation() do $confirmation. Operator = oceni nową wartość $confirmation.

ten ma taki sam skutek jak pisanie:

$confirmation = $payment_modules->confirmation(); 
if ($confirmation) { 
    // this will get executed if $confirmation is not false, null, or zero 
} 
+3

To jest bardziej metaobserwacja, ale czy nie jest to interesujące, gdy ktoś z niższym przedstawicielem ma mniej głosów w górę niż ktoś z wyższym rypsiem, mimo że odpowiedzi są prawie identyczne, a osoba niższego przedstawiciela odpowiedziana pierwsza? Interesujące zjawisko społeczne jest wszystkim. +1 za posiadanie jasnego wyjaśnienia wraz z tym kodem. – mrduclaw

4

Kod działa, ponieważ zadanie zwraca wartość przypisanej, więc jeśli $payment_modules->confirmation() jest true, $confirmation zostanie ustawiona na true, a następnie przypisanie powróci true . To samo dla false.

Dlatego można użyć polecenia, aby przypisać do wielu zmiennych, jak w a = b = 0. Przypisuje zero do b i zwraca to zero. Dlatego staje się a = 0.I a otrzymuje zero i zwróci to zero, które może lub nie może być użyte.