Pytanie Odniesienie - co oznacza ten symbol w PHP?


Co to jest?

Jest to zbiór pytań, które pojawiają się co jakiś czas na temat składni w PHP. Jest to również Wiki społeczności, więc każdy jest zaproszony do udziału w utrzymywaniu tej listy.

Dlaczego to?

Zwykle trudno było znaleźć pytania na temat operatorów i innych tokenów składni.¹
Główną ideą jest posiadanie odsyłaczy do istniejących pytań na Stack Overflow, więc łatwiej nam się do nich odnieść, a nie kopiować treści z Podręcznika PHP.

¹ Uwaga: od stycznia 2013 r. Stack Overflow obsługuje znaki specjalne. Po prostu otaczaj wyszukiwane hasła cytatami, np. [php] "==" vs "==="

Co powinienem tu zrobić?

Jeśli zostałeś tu wskazany przez kogoś, ponieważ zadałeś takie pytanie, zapoznaj się z poniższą składnią. Połączone strony z Instrukcja PHP wraz z połączonymi pytaniami prawdopodobnie odpowiedzą na twoje pytanie. Jeśli tak, zachęcamy do poparcia odpowiedzi. Ta lista nie jest substytutem pomocy udzielonej przez innych.

Lista

Jeśli Twój konkretny token nie jest wymieniony poniżej, możesz go znaleźć w Lista tokenów parsera.


&  Operatory bitowe lub Referencje


=&  Referencje


&=  Operatory bitowe


&&  Operatory logiczne


%  Operatory arytmetyczne


!!  Operatory logiczne


@  Operatory kontroli błędów


?:  Ternary Operator


??  Null Coalesce Operator (od PHP 7)


:  Alternatywna składnia struktur kontrolnych, Ternary Operator


::  Operator rozróżniania zasięgu


\  Przestrzenie nazw


->  Klasy i przedmioty


=>  Tablice


^  Operatory bitowe


>>  Operatory bitowe


<<  Operatory bitowe


<<<  Heredoc lub Nowdoc


=  Operatorzy przypisania


==  Operatory porównania


===  Operatory porównania


!==  Operatory porównania


!=  Operatory porównania


<>  Operatory porównania


<=>  Operatory porównania (od PHP 7.0)


|  Operatory bitowe


||  Operatory logiczne


~  Operatory bitowe


+  Operatory arytmetyczne, Operatory macierzy


+= i -=  Operatorzy przypisania


++ i --  Inkrementowanie / dekrementowanie operatorów


.=  Operatorzy przypisania


.  Operatory łańcuchowe


,  Argumenty funkcji

,  Deklaracje zmiennych


$$  Zmienne zmienne


`  Operator wykonawczy


<?=  Krótkie otwarte znaczniki


[]  Tablice (krótka składnia od PHP 5.4)


<?  Otwieranie i zamykanie tagów


...  Rozpakowywanie argumentów (od PHP 5.6)


**  Potęgowanie (od PHP 5.6)


#  Jednowierszowy komentarz w stylu powłoki



3793


pochodzenie


Wiem, że nie jest to ściśle PHP, ale co w tym link do phpdoc.org dla składni komentarza phpDocumentor, która jest powszechnie używana i której nie można również wyszukać /**? - Mike
Czy mogę zaproponować kwadratowy uchwyt i nawias klamrowy? - ajreal
Wpadłem też na ten problem (nie mogąc wyszukiwać znaków specjalnych), dlatego właśnie je stworzyłem SymbolHound, wyszukiwarka, która nie ignoruje znaków specjalnych. Też to opublikowałem StackApps. - dncrane
Cóż, od nagłówka Dlaczego to?, Domyślam się, że to dlatego, że "głównym pomysłem jest posiadanie linków do istniejących pytań w Stack Overflow, więc łatwiej nam je odnieść". - Herbert
Dzisiaj zadano pytanie (20.25) stackoverflow.com/questions/33833259/what-is-rscat-in-php pytając "Co to jest $ rsCat w php" (czy to pytanie nadal będzie widoczne i nie usunięte). O dziwo, nie ma żadnego odniesienia $ zmienna, ale około $$ Tylko zmienne zmienne. Uważam, że należy to gdzieś zmienić. - Funk Forty Niner


Odpowiedzi:


Inkrementowanie / dekrementowanie operatorów

++ operator inkrementacji

-- operator dekrementacji

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

Mogą one występować przed lub po zmiennej.

Jeśli zostanie wstawiona przed zmienną, operacja inkrementacji / dekrementacji zostanie wykonana dla zmiennej pierwszy następnie wynik jest zwracany. Jeśli zostanie wstawiona po zmiennej, zmienna jest pierwszy wrócił, a następnie wykonywana jest operacja inkrementacji / dekrementacji.

Na przykład:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

Przykład na żywo

W powyższym przypadku ++$i jest używany, ponieważ jest szybszy. $i++ miałby takie same wyniki.

Pre-increment jest trochę szybszy, ponieważ naprawdę zwiększa zmienną, a następnie "zwraca" wynik. Post-increment tworzy specjalną zmienną, kopiuje tam wartość pierwszej zmiennej i dopiero po użyciu pierwszej zmiennej, zastępuje jej wartość drugą.

Jednak musisz użyć $apples--, ponieważ najpierw chcesz wyświetlić aktualną liczbę jabłek, i następnie chcesz od niego odjąć jedną.

Możesz także inkrementować litery w PHP:

$i = "a";
while ($i < "c") {
    echo $i++;
}

Pewnego razu z został osiągnięty aa jest następny i tak dalej.

Zauważ, że zmienne znakowe mogą być zwiększane, ale nie zmniejszane, a mimo to obsługiwane są tylko zwykłe znaki ASCII (a-z i A-Z).


Liczba przepełnień stosu:


950



Różnica to dużo więcej niż tylko szybkość ... rozważ $ x = 0; $ y = $ x ++; w porównaniu z $ x = 0; $ y = ++ $ x; i wartość $ y w każdym przypadku - Mark Baker
+1 za uwagę, że dekrementatorzy nie działają na postaciach, tylko na liczbach - Mark Baker
Na litość boską, proszę usunąć pogrubioną informację o wstępnym inkrementowaniu nieskończenie szybciej. Jest to absolutnie najgorszy przykład przedwczesnej optymalizacji i tego rodzaju informacje nie powinny znajdować się w głowach ludzi, jeśli dopiero zaczynają uczyć się PHP. - Lotus Notes
@Lotus - uważam to za zabawny fakt. Jeśli jesteś początkującym w PHP lub C ++, itp., Wydaje się dość zwariowany, że ++ i i ++ są na tyle różne, by pracować z różnymi prędkościami. Znalazłem to fascynujące. - Peter Ajtai
@Peter Ajtai Tak, jest to interesujące, ale ze sposobu, w jaki zbudowałeś swój post, wydajesz się być jednym z najważniejszych faktów PHP, który jest absolutnie niezbędny do używania tego języka. - Lotus Notes


Bitowy operator

Co jest trochę? Bit jest reprezentacją 1 lub 0. Zasadniczo OFF (0) i ON (1)

Co to jest bajt? Bajt składa się z 8 bitów, a najwyższa wartość bajtu to 255, co oznaczałoby, że każdy bit jest ustawiony. Przyjrzymy się, dlaczego maksymalna wartość bajtu wynosi 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

Ta reprezentacja 1 bajta

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 Bajt)

Kilka przykładów lepszego zrozumienia

Operator "AND": &

$a =  9;
$b = 10;
echo $a & $b;

To by wyprowadziło numer 8. Dlaczego? Zobaczmy, korzystając z naszego przykładu tabeli.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

Widać więc z tabeli, że jedyny bit, jaki dzielą razem, to 8 bitów.

Drugi przykład

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

Dwa współdzielone bity to 32 i 4, które po dodaniu razem zwracają 36.

Operator "Or": |

$a =  9;
$b = 10;
echo $a | $b;

To wyświetli numer 11. Dlaczego?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

Zauważysz, że mamy zestaw 3 bitów w 8, 2 i 1 kolumnie. Dodaj te: 8 + 2 + 1 = 11.


361



Co jeśli $ a ma wartość większą niż 255? - Aycan Yaşıt
Istnieje bitowy kalkulator online: bitwiseoperatorcalculator.com - jonprasetyo
@ AycanYaşıt Większość systemu operacyjnego używa systemu 32- i 64-bitowego, co oznacza, że ​​limit wynosi znacznie więcej niż 255 (8 bitów). - AlbertSamuel
@ AycanYaşıt W rzeczywistości reprezentacja tutaj o długości jednego bajtu nie jest nawet poprawna, ponieważ nawet najmniejsza liczba całkowita jest nadal 64-bitowa (8 bajtów) w pamięci na nowoczesnej 64-bitowej platformie. - Kaii


_  Alias ​​dla gettext () 

Znak podkreślenia "_" jak w _() to alias do gettext() funkcjonować.


225





Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"

210





Magiczne stałe: Chociaż nie są to tylko symbole, ale ważna część tej symbolicznej rodziny. Istnieje osiem magicznych stałych, które zmieniają się w zależności od miejsca, w którym są używane.

__LINE__: Bieżący numer wiersza pliku.

__FILE__: Pełna ścieżka i nazwa pliku pliku. Jeśli zostanie użyty wewnątrz elementu include, zwracana jest nazwa dołączonego pliku. Od PHP 4.0.2, __FILE__ zawsze zawiera bezwzględną ścieżkę z rozwiązanymi linkami dowiązanymi, podczas gdy w starszych wersjach zawiera względną ścieżkę w pewnych okolicznościach.

__DIR__: Katalog pliku. Jeśli zostanie użyty wewnątrz elementu include, zwracany jest katalog dołączonego pliku. Jest to równoważne dirname(__FILE__). Ta nazwa katalogu nie ma końcowego ukośnika, chyba że jest to katalog główny. (Dodano w PHP 5.3.0.)

__FUNCTION__: Nazwa funkcji. (Dodane w PHP 4.3.0) Od PHP 5 ta stała zwraca nazwę funkcji, która została zadeklarowana (wielkość liter ma znaczenie). W PHP 4 jego wartość jest zawsze pisana małymi literami.

__CLASS__: Nazwa klasy. (Dodano w PHP 4.3.0) Od PHP 5 ta stała zwraca nazwę klasy tak, jak została zadeklarowana (rozróżniana jest wielkość liter). W PHP 4 jego wartość jest zawsze pisana małymi literami. Nazwa klasy obejmuje przestrzeń nazw, w której została zadeklarowana (np. Foo\Bar). Zauważ, że od PHP 5.4 __CLASS__ działa również w cechach. W przypadku użycia w metodzie cech, __CLASS__ jest nazwą klasy, w której używana jest cecha.

__TRAIT__: Nazwa cechy. (Dodano w PHP 5.4.0) Od PHP 5.4 ta stała zwraca tę cechę, która została zadeklarowana (rozróżniana jest wielkość liter). Nazwa cechy obejmuje przestrzeń nazw, w której została zadeklarowana (np. Foo\Bar).

__METHOD__: Nazwa metody klasy. (Dodano w PHP 5.0.0) Nazwa metody jest zwracana tak, jak została zadeklarowana (rozróżniana jest wielkość liter).

__NAMESPACE__: Nazwa bieżącego obszaru nazw (wielkość liter ma znaczenie). Ta stała jest definiowana podczas kompilacji (Dodano w PHP 5.3.0).

Źródło


194





<=> Operator statku kosmicznego

Dodano w PHP 7

The operator statku kosmicznego  <=> to najnowszy operator porównania dodany w PHP 7. Jest to niezespolony operator binarny o tym samym priorytecie co operatory równości (==, !=, ===, !==). Ten operator pozwala na prostsze trójstronne porównanie operandów lewych i prawych.

Operator daje całkowite wyrażenie:

  • 0 gdy oba operandy są równe
  • Mniej niż 0 gdy lewy operand jest mniejszy niż prawy operand
  • Lepszy niż 0 gdy lewy operand jest większy niż prawy operand

na przykład

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

Dobrą praktyczną aplikacją użycia tego operatora byłoby callback typu porównawczego, który powinien zwracać zerową, ujemną lub dodatnią liczbę całkowitą na podstawie trójdrożnego porównania dwóch wartości. Funkcja porównania została przekazana do usort jest jednym z takich przykładów.

Przed PHP 7 piszesz ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

Od PHP 7 możesz napisać ...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
});

189



Nie jestem pewien jak $a <=> $b różni się od $a - $b - rev
@Aidout $a - $b działa dla liczb, ale nie dla łańcuchów, obiektów lub tablic. - mcrumley
@mcrumley Nie, to jest gorsze. Ogólnie $a - $b nawet nie działa dla liczb; działa tylko dla liczby całkowite. Nie działa dla liczb niecałkowitych, ponieważ usort rzuca wartości zwracane przez funkcję porównującą do int, co oznacza, że ​​0,5 zostanie rzucone do 0, co oznacza, że ​​dwie liczby z różnicą mniejszą niż 1, na przykład 4 i 4.6, mogą (w zależności od tego, który z nich zostanie przekazany jako pierwszy argument funkcji porównawczej) niepoprawnie porównać jako równe. - Mark Amery
@MarkAmery Przewodnik migracji nie jest udokumentowanym zachowaniem operatora. W tym celu zajrzyj do sekcji obsługi języka w instrukcji obsługi php.net/language.operators.comparison rzeczywiste zachowanie za tym polega na różnych funkcjach porównywania API, np. gdy robisz strcmp dla ciągów, gdzie nie możesz zagwarantować rzeczywistej wartości zwracanej w każdym pojedynczym przypadku. Oczywiście, to prawie zawsze 1, 0 lub -1, ale w przypadkach, gdy nie można jej zagwarantować, jak w pakowaniu strcmp libc, oferujesz takie samo zdefiniowane zachowanie, jak bazowa specyfikacja, aby była bezpieczna. - Sherif
@MarkAmery Chodzi o to, aby nie pozwolić ludziom polegać na niezdefiniowanym zachowaniu. W jednym przypadku, w którym ktoś dostaje wartość, która nie jest dokładnie równa 1, 0 lub -1, dostajesz kogoś, kto zgłasza raport o błędzie, sądząc, że coś jest nie tak w tym języku. Dlatego właśnie dokumentujemy, że wszystko, co możemy zagwarantować, to ta wartość mniej niż, Lepszy niż, lub równy0, i niekoniecznie 1, 0 i -1. - Sherif


Wpisz Operatory

instanceof służy do określenia, czy zmienna PHP jest instancyjnym obiektem danej klasy.

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

Powyższy przykład wyświetli:

bool(true)
bool(false)

Powód: Powyżej przykładu $a jest przedmiotem mclass więc używaj tylko a mclass dane nie są instancją z sclass

Przykład z dziedziczeniem

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; 
var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

Powyższy przykład wyświetli:

bool(true)
bool(true)

Przykład z klonem

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); 
var_dump($b instanceof cloneable);

Powyższy przykład wyświetli:

bool(true)
bool(true)

121



Powyższe działa również z "interfejsami". Jest to przydatne do sprawdzenia, czy dany interfejs jest dostępny. - Ryan Vincent


Przegląd operatorzy w PHP:


Operatory logiczne:

  • $ a && $ b: TRUE, jeśli oba $ a i $ b są PRAWDZIWE.
  • $ a || $ b: TRUE, jeśli $ a lub $ b ma wartość TRUE.
  • $ a xor $ b: TRUE, jeśli $ a lub $ b ma wartość TRUE, ale nie obie.
  • ! $ a: TRUE, jeśli $ a nie jest PRAWDZIWE.
  • $ ai $ b: TRUE, jeśli oba $ a i $ b są PRAWDZIWE.
  • $ a lub $ b: TRUE, jeśli $ a lub $ b ma wartość TRUE.

Operatory porównania:

  • $ a == $ b: TRUE, jeśli $ a jest równe $ b po żonglowaniu typem.
  • $ a === $ b: TRUE, jeśli $ a jest równe $ b, i są tego samego typu.
  • $ a! = $ b: TRUE, jeśli $ a nie jest równe $ b po żonglowaniu typem.
  • $ a <> $ b: TRUE, jeśli $ a nie jest równe $ b po żonglowaniu typem.
  • $ a! == $ b: TRUE, jeśli $ a nie jest równe $ b, lub nie są tego samego typu.
  • $ a <$ b : TRUE, jeśli $ a jest ściśle niższe niż $ b.
  • $ a> $ b : TRUE, jeśli $ a jest ściśle większe niż $ b.
  • $ a <= $ b : TRUE, jeśli $ a jest mniejsze lub równe $ b.
  • $ a> = $ b : TRUE, jeśli $ a jest większe lub równe $ b.
  • $ a <=> $ b : Liczba całkowita mniejsza, równa lub większa od zera, gdy $ a jest odpowiednio mniejsze, równe lub większe niż $ b. Dostępne od PHP 7.
  • $ a? $ b: $ c : jeśli $ a return $ b else return $ c (operator trójskładnikowy)
  • $ a ?? $ c : To samo co $ a? $ a: $ c (operator koalescencji zerowej - wymaga PHP> = 7)

Operatory arytmetyczne:

  • - $ a : Przeciwko $ a.
  • $ a + $ b : Suma $ a i $ b.
  • $ a - $ b : Różnica od $ a do $ b.
  • $ a * $ b : Produkt $ ai $ b.
  • $ a / $ b : Iloraz $ a i $ b.
  • $ a% $ b : Pozostało $ $ podzielone przez $ b.
  • $ a ** $ b : Wynik podniesienia $ a do $ b'th power (wprowadzony w PHP 5.6)

Operatory inkrementujące / dekrementujące:

  • ++ $ a : Inkrementuje $ a o jeden, a następnie zwraca $ a.
  • $ a ++ : Zwraca $ a, a następnie zwiększa o jeden.
  • - $ a : Zmniejsza o jeden, a następnie zwraca $ a.
  • $ a-- : Zwraca $ a, następnie zmniejsza $ a o jeden.

Operatory bitowe:

  • $ a & $ b : Ustawione są bity ustawione zarówno w $ a, jak i $ b.
  • $ a | $ b : Ustawione są bity ustawione w $ a lub $ b.
  • $ a ^ $ b : Ustawione są bity ustawione w $ a lub $ b, ale nie obie.
  • ~ $ a : Bity ustawione w $ a nie są ustawione i na odwrót.
  • $ a << $ b : Przesunięcie bitów o $ a $ b kroków w lewo (każdy krok oznacza "pomnóż przez dwa")
  • $ a >> $ b : Przesunąć bity o $ a $ b w prawo (każdy krok oznacza "podzielić przez dwa")

Operatory łańcuchowe:

  • $ a. $ b : Konkatenacja $ ai $ b.

Operatory macierzy:

  • $ a + $ b: Unia $ ai $ b.
  • $ a == $ b : TRUE, jeśli $ a i $ b mają te same pary klucz / wartość.
  • $ a === $ b : TRUE, jeśli $ a i $ b mają te same pary klucz / wartość w tej samej kolejności i tego samego typu.
  • $ a! = $ b : TRUE, jeśli $ a nie jest równe $ b.
  • $ a <> $ b : TRUE, jeśli $ a nie jest równe $ b.
  • $ a! == $ b : TRUE, jeśli $ a nie jest identyczne z $ b.

Operatorzy przypisania:

  • $ a = $ b : Wartość $ b jest przypisana do $ a
  • $ a + = $ b : Tak samo jak $ a = $ a + $ b
  • $ a - = $ b : Tak samo jak $ a = $ a - $ b
  • $ a * = $ b : Tak samo jak $ a = $ a * $ b
  • $ a / = $ b : Tak samo jak $ a = $ a / $ b
  • $ a% = $ b : Tak samo jak $ a = $ a% $ b
  • $ a ** = $ b : Tak samo jak $ a = $ a ** $ b
  • $ a. = $ b : Tak samo jak $ a = $ a. $ b
  • $ a & = $ b : Tak samo jak $ a = $ a & $ b
  • $ a | = $ b : Tak samo jak $ a = $ a | $ b
  • $ a ^ = $ b : Tak samo jak $ a = $ a ^ $ b
  • $ a << = $ b : Tak samo jak $ a = $ a << $ b
  • $ a >> = $ b : Tak samo jak $ a = $ a >> $ b

Uwaga

and operator i or operator ma niższy priorytet niż operator przypisania =.

To znaczy że $a = true and false; jest równa ($a = true) and false.

W większości przypadków prawdopodobnie będziesz chciał użyć && i ||, które zachowują się w sposób znany z języków takich jak C, Java lub JavaScript.


96





Operator statku kosmicznego <=> (Dodano w PHP 7)

Przykłady dla <=> Operator Spaceship (PHP 7, Source: PHP Manual):

Liczby całkowite, zmienne, łańcuchy, tablice i obiekty do trójstronnego porównywania zmiennych.

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

72



To jest kopia tego odpowiedź. - David Archibald
Czek php.net/manual/en/language.operators.comparison.php dla odniesienia - rajangupta


{} Nawiasy klamrowe

I kilka słów o ostatnim poście

$x[4] = 'd'; // it works
$x{4} = 'd'; // it works

$echo $x[4]; // it works
$echo $x{4}; // it works

$x[] = 'e'; // it works
$x{} = 'e'; // does not work

$x = [1, 2]; // it works
$x = {1, 2}; // does not work

echo "${x[4]}"; // it works
echo "${x{4}}"; // does not work

echo "{$x[4]}"; // it works
echo "{$x{4}}"; // it works

55



{'} notacja dla nazw właściwości. echo $ movies-> movie -> {'great-lines'} -> line; można użyć do uzyskania dostępu do danych w SimpleXMLElement. Może to może być użyte również w innych przypadkach. php.net/manual/en/simplexml.examples-basic.php - Andrei
To było interesujące znalezisko - adelowo


Ciągi PHP: Łańcuchy PHP można określić na cztery sposoby, nie tylko na dwa sposoby:

1) Pojedyncze ciągi cytatów: 

$string = 'This is my string'; // print This is my string

2) Podwójne ciągi cytatów: 

$str = 'string';

$string = "This is my $str"; // print This is my string

3) Heredoc: 

$string = <<<EOD
This is my string
EOD; // print This is my string

4) Nowdoc (od PHP 5.3.0): 

$string = <<<'END_OF_STRING'
    This is my string 
END_OF_STRING; // print This is my string

45



To już istnieje: stackoverflow.com/q/3446216/3933332 - Rizier123
@ Rizier123: Co oznacza "Heredocs nie może być używany do inicjowania właściwości klas. Od PHP 5.3 ograniczenie to jest poprawne tylko dla zmiennych zawierających heredocs."? - user2839497