Różnica między cudzysłowami podwójnymi i pojedynczymi w PHP. Jaka jest różnica między ciągami znaków w cudzysłowie pojedynczym i podwójnym w PHP? Podwójne cudzysłowy w PHP w cudzysłowie

Dom / Instalacja urządzenia

Komentarz: W PHP 7.0.0 na platformach 64-bitowych nie ma osiągalnych ograniczeń długości linii; w systemach 32-bitowych i we wcześniejszych wersjach PHP linie nie mogą być większe niż 2 GB (2147483647 bajtów).

Składnia

Ciąg można zdefiniować przez cztery na różne sposoby:

  • pojedyncze cudzysłowy
  • podwójne cudzysłowy
  • składnia nowdoc (od PHP 5.3.0)

Pojedyncze cytaty

Najprostszy sposób zdefiniowanie ciągu polega na umieszczeniu go w pojedynczym cudzysłowie (znak " ).

Aby użyć pojedynczego cudzysłowu w ciągu znaków, należy uciec od niego ukośnikiem odwrotnym ( \ ). Jeśli chcesz napisać sam ukośnik odwrotny, zduplikuj go ( \\ ). Wszystkie inne zastosowania ukośnika odwrotnego będą interpretowane jako normalne znaki: oznacza to, że jeśli spróbujesz użyć innych sekwencji ucieczki, takich jak \R Lub \N, zostaną one wyświetlone w niezmienionej postaci, a nie w formie specjalnego zachowania.

echo „to jest prosty ciąg”;

echo „Możesz także wstawiać w linie
taki znak nowej linii,
To jest w porządku”
;

// Wyniki: Arnold powiedział kiedyś: „Wrócę”
echo „Pewnego dnia Arnold powiedział: «Wrócę».;

Echo „Czy usunąłeś C:\\*.*?”;

// Dane wyjściowe: Czy usunąłeś C:\*.*?
echo "Czy usunąłeś C:\*.*?" ;

// Dane wyjściowe: To nie zostanie rozwinięte: \n nowa linia
echo „To nie zostanie rozwinięte: \n nowa linia”;

// Dane wyjściowe: zmienne $expand i $either nie są rozwijane
echo „Zmienne $expand i $either nie są rozwijane”;
?>

Podwójne cudzysłowy

Jeśli ciąg znaków jest ujęty w cudzysłów ("), PHP rozpoznaje następujące sekwencje specjalne znaków specjalnych:

Sekwencje ucieczki
Podciąg Oznaczający
\N nowa linia (LF lub 0x0A (10) w ASCII)
\R powrót karetki (CR lub 0x0D (13) w ASCII)
\T pozioma tabulator (HT lub 0x09 (9) w ASCII)
\v pionowa tabulator (VT lub 0x0B (11) w ASCII) (od PHP 5.2.5)
\mi znak ucieczki (ESC lub 0x1B (27) w ASCII) (od PHP 5.4.4)
\F kanał strony (FF lub 0x0C(12) w ASCII) (od PHP 5.2.5)
\\ ukośnik odwrotny
\$ znak dolara
\" podwójny cytat
\{1,3} sekwencja znaków pasujących do wyrażenia regularnego zawierającego znak ósemkowy, która dyskretnie przepełnia się, aby zmieścić się w bajcie (tj. „\400” === „\000”)
\x(1,2) ciąg znaków odpowiadający wyrażeniu regularnemu znaku w notacji szesnastkowej
\u(+) sekwencja znaków pasujących do wyrażenia regularnego znaku Unicode, które odwzorowuje ciąg znaków w reprezentacji UTF-8 (dodano w PHP 7.0.0)

Podobnie jak w przypadku łańcucha ujętego w pojedyncze cudzysłowy, ucieczka dowolnego znaku spowoduje również wyświetlenie samego znaku ucieczki. Przed wersją PHP 5.1.1, ukośnik odwrotny \($zmienna) nie została opublikowana.

Heredok

Trzeci sposób definiowania ciągów polega na użyciu składni heredoc: <<< . Po tym operatorze należy podać identyfikator, a następnie znak nowego wiersza. Po tym następuje sama linia, a następnie ten sam identyfikator, zamykający wstawienie.

Linia powinien zacznij od identyfikatora zamykającego, tj. musi pojawić się w pierwszej kolumnie wiersza. Dodatkowo identyfikator musi spełniać te same zasady nazewnictwa, co wszystkie inne znaczniki w PHP: zawierać tylko znaki alfanumeryczne i znak podkreślenia i nie może zaczynać się od cyfry (podkreślenia są dozwolone).

Uwaga

Bardzo ważne jest, aby pamiętać, że linia identyfikatora zamknięcia nie może zawierać żadnych innych znaków z wyjątkiem średnika ( ; ). Oznacza to, że identyfikator nie powinno być wcięte oraz że przed i po średniku nie może być spacji ani tabulatorów. Ważne jest również, aby zrozumieć, że pierwszy znak przed identyfikatorem zamykającym musi być znakiem nowej linii, zgodnie z definicją w systemie operacyjnym. Na przykład w systemach UNIX, w tym macOS, jest to \N. Nowa linia musi również rozpoczynać się bezpośrednio po identyfikatorze zamykającym.

Jeśli ta zasada zostanie złamana i identyfikator zamknięcia nie jest „czysty”, zakłada się, że brakuje identyfikatora zamknięcia i PHP będzie dalej go szukać. Jeśli w tym przypadku nigdy nie zostanie znaleziony poprawny identyfikator zamknięcia, spowoduje to błąd analizy numeru linii na końcu skryptu.

Przykład nr 1 Przykład nieprawidłowej składni

klasa foo (
publiczny $bar =<<bar
EOT;
// wcięcie przed identyfikatorem zamykającym jest niedozwolone
}
?>

Przykład nr 2 Przykład poprawnej składni

klasa foo (
publiczny $bar =<<bar
EOT;
}
?>

Heredoc nie może być używany do inicjowania pól klas.

Tekst Heredoc zachowuje się w taki sam sposób, jak ciąg znaków w podwójnych cudzysłowach, bez ich posiadania.

Oznacza to, że nie musisz uciekać się do cudzysłowów w heredoc, ale nadal możesz używać powyższych sekwencji ucieczki.

Zmienne są przetwarzane, ale podczas używania złożonych zmiennych w heredoc należy zachować taką samą ostrożność, jak podczas pracy z ciągami znaków.<<Przykład nr 3 Przykład definicji ciągu Heredoc
$str =
Przykładowa linia,
obejmujący kilka linii,

używając składni heredoc.
{
EOD;
Klasowe fuu

var $foo ;
{
var $bar;
Funkcja__konstrukcja()
}
}

$this -> foo = "Foo" ;
$to ->

$foo = nowe foo();<<$nazwa = "Nazwa" ; .
echo
Nazywam się „$name”. Wpisuję $foo -> foo .
Teraz dedukuję
EOT;
?>

( $foo -> bar [ 1 ])

Powinno to wypisać wielką literę „A”: \x41

Nazywam się „Imię”. Piszę Foo. Teraz wyprowadzam Bar2. Powinno to wypisać wielką literę „A”: A

Możliwe jest również użycie składni heredoc do przekazywania danych przez argumenty funkcji:

Od wersji 5.3.0 stało się możliwe inicjowanie zmiennych statycznych i właściwości/stałych klas przy użyciu składni heredoc:
Przykład #5 Użycie heredoc do inicjowania zmiennych statycznych
{
// Zmienne statyczne<<funkcja foo()
statyczny $bar =
}

Nic tu nie ma...
ETYKIETA;
{
// Stałe/właściwości klasy<<klasa, fuj
stała BAR =

Przykład użycia stałej<<FOOBAR;
stała BAR =
}
?>

Publiczny $baz =

Przykład użycia pola

Od wersji PHP 5.3.0 identyfikator Heredoc można także ująć w cudzysłów: Nowdoc Nowdoc jest taki sam dla ciągów w pojedynczym cudzysłowie, jak heredoc dla ciągów w podwójnym cudzysłowie. Nowdoc jest podobny do heredoc, ale w środku nie stosuje się żadnych substytucji

. Ten projekt jest idealny do osadzania kodu PHP lub innych dużych bloków tekstu bez konieczności ucieczki. Pod tym względem jest trochę podobny do konstrukcji SGML <<< poprzez zadeklarowanie bloku tekstu nieprzeznaczonego do przetwarzania. <<<"EOT" Nowdoc jest oznaczony tą samą sekwencją

, który jest używany w heredoc, ale następujący identyfikator jest ujęty w pojedynczy cudzysłów, na przykład:

$foo = nowe foo();<<<"EOD"
.
Wszystkie warunki mające zastosowanie do identyfikatorów heredoc mają zastosowanie również do nowdoc, w szczególności te, które dotyczą identyfikatora zamykającego.
Przykład #7 Przykład użycia nowdoc
Przykładowy tekst,
obejmujący kilka linii

używając składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie,

Przykład tekstu obejmującego wiele wierszy przy użyciu składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie, np. \\ i \".

Przykład #8 Przykład cytowania ciągu znaków Nowdoc ze zmiennymi

/* Bardziej złożony przykład ze zmiennymi. */
ETYKIETA;
{
publiczny $foo ;
publiczny $bar ;

var $foo ;
{
var $bar;
$this -> bar = array("Bar1" , "Bar2" , "Bar3" );
}
}

$this -> foo = "Foo" ;
$to ->

$foo = nowe foo();<<<"EOT"
Nazywam się „$name”. Drukuję $foo->foo.
Teraz drukuję ($foo->bar).
To nie powinno wypisywać dużej litery „A”: \x41
EOT;
?>

używając składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie,

Nazywam się „$name”. Drukuję $foo->foo. Teraz drukuję ($foo->bar). To nie powinno wypisywać dużej litery „A”: \x41

Przykład #9 Przykład wykorzystania danych statycznych

klasa foo (
publiczny $bar =<<<"EOT"
bar
EOT;
}
?>

Komentarz:

obsługa nowdoc została dodana w PHP 5.3.0.

Obsługa zmiennych

Jeżeli ciąg znaków jest podany w cudzysłowie lub przy użyciu heredoc, przetwarzane są znajdujące się w nim zmienne.

Istnieją dwa rodzaje składni: prosta i złożona. Prosta składnia jest łatwiejsza i wygodniejsza. Umożliwia przetwarzanie zmiennej, wartości tablicy ( szyk ) lub właściwości obiektu ( obiekt

) przy minimalnym wysiłku.

Złożoną składnię można rozpoznać po nawiasach klamrowych otaczających wyrażenie.

Prosta składnia $ Jeśli tłumacz napotka znak dolara (

), przechwytuje jak najwięcej znaków, aby utworzyć prawidłową nazwę zmiennej. Jeśli chcesz określić koniec nazwy, ujmij nazwę zmiennej w nawiasy klamrowe.

$sok = "jabłko" ;

echo "Wypił trochę $soku soku." . PHP_EOL;
// Niepoprawnie. „s” jest prawidłowym znakiem nazwy zmiennej, ale zmienna nosi nazwę $juice.

echo "Wypił trochę soku z $soków." ;
// Prawidłowy. Koniec nazwy zmiennej jest ściśle wskazany w nawiasach:
?>

używając składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie,

echo "Wypił trochę soku z $(sok) s." ;

Wypił trochę soku jabłkowego. Wypił trochę soku z. Wypił sok z jabłek. Prosta składnia jest łatwiejsza i wygodniejsza. Umożliwia przetwarzanie zmiennej, wartości tablicy ( Element tablicy ( ) lub właściwości obiektu () lub właściwość obiektu ( ] ). W indeksach tablic znajduje się zamykający nawias kwadratowy (

) oznacza koniec definicji indeksu. Do właściwości obiektów odnoszą się te same zasady, co do prostych zmiennych.

Przykład #10 Prosty przykład składni
zdefiniuj („KOOLAID”, „koolaid1” );

$soki = array("jabłko", "pomarańcza", "koolaid1" => "fioletowy" );
echo "Wypił trochę $soków [ 0 ] soku." . PHP_EOL;
echo "Wypił trochę $soku [ 1 ] soku." . PHP_EOL;

echo "Wypił trochę $soku [ koolaid1 ] soku." . PHP_EOL;
ludzie z klasy (
public $jan = "Jan Smith" ;
public $jane = "Jane Smith" ;

public $robert = "Robert Paulsen" ;
}

Publiczny $kowal = "Kowal" ;

echo "$ludzie -> John wypił trochę $soków [ 0 ] soku." . PHP_EOL;
echo " $people -> john, a następnie przywitał się z $people -> jane." . PHP_EOL;
echo "$people -> żona Johna przywitała $people -> Robert." . PHP_EOL;
echo " $ludzie -> Robert przywitał dwóch $ludzi -> kowali ." ; // Nie zadziała
?>

używając składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie,

Wypił trochę soku jabłkowego. Wypił trochę soku pomarańczowego. Wypił trochę fioletowego soku. John Smith wypił trochę soku jabłkowego. Następnie John Smith przywitał się z Jane Smith. Żona Johna Smitha przywitała Roberta Paulsena. Robert Paulsen przywitał tę dwójkę.

Dodano obsługę PHP 7.1.0 negatywny indeksy numeryczne.

Przykład #11 Ujemne indeksy liczbowe

$string = "string" ;
echo „Znak o indeksie -2 jest równy$string [-2].", PHP_EOL;
$string [- 3 ] = "o";
echo „Zmiana znaku na pozycji -3 na „o” powoduje wyświetlenie następującego wiersza:$string.", PHP_EOL;
?>

używając składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie,

Znak o indeksie -2 jest równy n. Zmiana znaku na pozycji -3 na „o” daje następującą linię: strong

W przypadku bardziej złożonych rozwiązań użyj złożonej składni.

Złożona (kręcona) składnia

Nazywa się to złożonym nie dlatego, że jest trudne do zrozumienia, ale dlatego, że pozwala na użycie złożonych wyrażeń.

Dowolna zmienna skalarna, element tablicy lub właściwość obiektu odwzorowana na ciąg znaków może być reprezentowana w ciągu znaków przy użyciu tej składni. Po prostu napisz wyrażenie w taki sam sposób, jak poza linią, a następnie zawiń je { I } . Od { nie można uciec, ta składnia zostanie rozpoznana tylko wtedy, gdy $ następuje bezpośrednio { . Używać {\$ wydrukować {$ .

Kilka ilustrujących przykładów:
// Pokaż wszystkie błędy

raportowanie_błędów(E_ALL);

$świetnie = "świetnie" ;
// Nie działa, wychodzi: To jest (świetne)

echo "To jest ($świetne)";
// Działa, wyniki: To jest świetne

echo "To jest ($świetne)";
echo // Działa„Ten plac jest szeroki

( $kwadrat -> szerokość ) 00 centymetrów." ;
// Działa, cytowane słowa kluczowe działają tylko ze składnią nawiasów klamrowych

echo "To jest ($świetne)";
echo "To działa: ( $arr ["klucz"]) ";

echo "To działa: ( $arr [ 4 ][ 3 ]) ";
// To jest nieprawidłowe z tego samego powodu co $foo na zewnątrz
// linie. Innymi słowy, nadal będzie działać,
// ale ponieważ PHP najpierw szuka stałej foo, spowoduje to
echo // błąd poziomu E_NOTICE (niezdefiniowana stała).„To jest błędne:

( $arr [ foo ][ 3 ]) ";
// Działa. Podczas wewnętrznego używania tablic wielowymiarowych
// linie zawsze używają nawiasów klamrowych

echo "To działa: ( $arr [ "foo" ][ 3 ]) ";
// Działa.

echo echo "To działa: ". $arr ["foo"] [3];( $obj -> wartości [3] -> nazwa) ";

echo „To jest wartość nazwanej zmiennej$nazwa: ($( $nazwa )) ";

echo „To jest wartość nazwy zmiennej zwracana przez funkcję getName():($(pobierzNazwę())) ";

echo „To jest wartość zmiennej według nazwy, która zwraca \$object->getName():($($obiekt -> getName())) ";

// Nie działa, zwraca: Oto co zwraca funkcja getName(): (getName())
echo „Oto co zwraca funkcja getName(): (getName())”;
?>

Za pomocą tej składni można również uzyskać dostęp do właściwości obiektu w ciągu znaków.

klasa foo (
var $bar = "Jestem barem." ;
}

$this -> foo = "Foo" ;
$bar = "pasek" ;
$baz = array("foo" , "bar" , "baz" , "quux" );
echo " ($foo -> $bar) \n";
echo " ( $foo ->( $baz [ 1 ])) \n";
?>

używając składni nowdoc. Ukośniki odwrotne są zawsze traktowane dosłownie,

Jestem barem. Jestem barem.

Komentarz:

Funkcje, wywołania metod, zmienne klas statycznych i stałe klas działają wewnętrznie {$} , zaczynając od PHP 5. Jednakże podana wartość będzie traktowana jako nazwa zmiennej w tym samym kontekście, w którym jest zdefiniowana. Używanie pojedynczych nawiasów klamrowych ( {} ) nie będzie działać w przypadku dostępu do wartości funkcji, metod, stałych klas lub zmiennych klas statycznych.

Kilka ilustrujących przykładów:
// Pokaż wszystkie błędy

piwa klasowe (
const softdrink = "piwo korzenne" ;
public static $ale = "ipa" ;
}

$piwo korzenne = "A i W" ;
$ipa = "Aleksander Keith" ;

// To działa, wychodzi: Chcę A i W
echo "Chciałbym ($(piwa ​​:: napój bezalkoholowy )) \n" ;

// To też działa, wyniki: Chciałbym Alexandra Keitha
echo "Chciałbym ($(piwa ​​:: $ale )) \n" ;
?>

Dostęp i zmiana znaku w ciągu

Znaki w łańcuchach można używać i modyfikować, określając ich przesunięcie od początku ciągu, zaczynając od zera, w nawiasach kwadratowych po ciągu, na przykład $str. W tym celu pomyśl o łańcuchu znaków jako o tablicy znaków. I Jeśli chcesz uzyskać lub zamienić więcej niż 1 znak, możesz skorzystać z funkcji.

Komentarz: substr() substr_replace() Od wersji PHP 7.1.0 obsługiwane są ujemne wartości przesunięcia. Określają odsunięcie od końca linii. Poprzednio ujemne przesunięcia powodowały błąd poziomu E_UWAGA

Komentarz: przy czytaniu (zwracając pusty ciąg znaków) lub

Uwaga

E_OSTRZEŻENIE Określają odsunięcie od końca linii. Poprzednio ujemne przesunięcia powodowały błąd poziomu.

Uwaga

Używany jest tylko pierwszy znak przypisanego ciągu.

Komentarz: Począwszy od PHP 7.1.0 przypisanie pustego łańcucha spowoduje błąd krytyczny. Poprzednio w tym przypadku przypisano bajt zerowy (NULL).

Ciągi znaków w PHP są wewnętrznie tablicami bajtów. W rezultacie dostęp do ciągu znaków lub modyfikowanie go z przesunięciem nie jest bezpieczne w przypadku kodowania wielobajtowego i należy go wykonywać wyłącznie w przypadku ciągów w kodowaniu jednobajtowym, takim jak ISO-8859-1.

Od PHP 7.1.0 użycie pustego indeksu powoduje wcześniej błąd krytyczny; w tym przypadku ciąg znaków był konwertowany na tablicę bez ostrzeżenia.
Przykład #12 Kilka przykładowych ciągów znaków
// Pobierz pierwszy znak ciągu

$str = "To jest test." ;
$pierwszy = $str [ 0 ];

// Pobierz trzeci znak ciągu
$trzeci = $str [ 2 ];
// Pobierz ostatni znak ciągu

$str = "To wciąż test." ;
$ostatni = $str [ strlen ($str ) - 1 ];
// Zmień ostatni znak linii

?>

$str = "Spójrz na morze"; $str [ strlen ($str )- 1 ] = "e"; Począwszy od PHP 5.4, przesunięcie w ciągu musi być określone albo jako liczba całkowita, albo jako ciąg znaków zawierający cyfry, w przeciwnym razie zostanie wyświetlone ostrzeżenie. Poprzednio przesunięcie podane przez ciąg znaków podobny 0 .

„fuj”

, bez ostrzeżenia został przekształcony w

Przykład #13 Różnice pomiędzy PHP 5.3 i PHP 5.4
$str = "abc" ;

Var_dump($str["1"]);
var_dump (isset($str [ "1" ]));

Var_dump($str["1.0"]);
var_dump (isset($str [ "1.0" ]));

Var_dump($str["x"]);
var_dump (isset($str [ "x" ]));
?>

Var_dump($str["1x"]);

var_dump (isset($str [ "1x" ]));

Wynik uruchomienia tego przykładu w PHP 5.3:

string(1) "b" bool(true) string(1) "b" bool(true) string(1) "a" bool(true) string(1) "b" bool(true)

Komentarz:

Wynik uruchomienia tego przykładu w PHP 5.4: string(1) "b" bool(true) Ostrzeżenie: Niedozwolone przesunięcie ciągu "1.0" w /tmp/t.php w linii 7 string(1) "b" bool(false) Ostrzeżenie: Niedozwolone przesunięcie ciągu "x" w / tmp/t.php w linii 9 string(1) "a" bool(false) string(1) "b" bool(false) {} Próba uzyskania dostępu do zmiennych innych typów (z wyjątkiem tablic lub obiektów implementujących określone interfejsy) przy użyciu Lub.

Komentarz:

po cichu powróci NIEWAŻNY {} .

W PHP 5.5 dodano obsługę dostępu do znaków w literałach łańcuchowych za pomocą składni

Lub

Istnieje wiele przydatnych funkcji do modyfikowania ciągów.

Podstawowe funkcje opisano w sekcji dotyczącej funkcji łańcuchowych, a w przypadku zaawansowanego wyszukiwania i zamiany — funkcji wyrażeń regularnych zgodnych z Perlem. Konwertuj na ciąg Wartość można przekonwertować na ciąg znaków za pomocą rzutowania strval(). echo string(1) "b" bool(true) Ostrzeżenie: Niedozwolone przesunięcie ciągu "1.0" w /tmp/t.php w linii 7 string(1) "b" bool(false) Ostrzeżenie: Niedozwolone przesunięcie ciągu "x" w / tmp/t.php w linii 9 string(1) "a" bool(false) string(1) "b" bool(false) W wyrażeniach, w których wymagany jest ciąg znaków, konwersja następuje automatycznie. Dzieje się tak, gdy używasz funkcji wydrukować.

lub gdy wartość zmiennej jest porównywana z ciągiem znaków. Lektura rozdziałów „Typy” i „Manipulacja typami” w podręczniku sprawi, że poniższe kwestie staną się jaśniejsze. Zobacz także typ zestawu() Tablice są zawsze konwertowane na ciąg Prosta składnia jest łatwiejsza i wygodniejsza. Umożliwia przetwarzanie zmiennej, wartości tablicy ("Szyk" echo NIEWAŻNY W wyrażeniach, w których wymagany jest ciąg znaków, konwersja następuje automatycznie., więc nie możesz wyświetlić zawartości tablicy ( ), używającżeby zobaczyć co zawiera. Aby wyświetlić pojedynczy element, użyj czegoś takiego

echo $arr["foo"] . Poniżej znajdują się wskazówki dotyczące wyświetlania/przeglądania całej zawartości. Aby przekonwertować zmienną typu "Obiekt" w typie

smyczkowy Lub Stosowana jest magiczna metoda __toString.

Oznaczający jest zawsze konwertowany na pusty ciąg. I Jak widać powyżej, bezpośrednia konwersja tablic, obiektów czy zasobów na ciąg znaków nie dostarcza żadnych przydatnych informacji o samych wartościach poza ich typami..

Lepszym sposobem wyprowadzania wartości do debugowania jest użycie funkcji drukuj_r().

var_dump()

Większość wartości w PHP można przekonwertować na ciąg znaków w celu trwałego przechowywania. Ta metoda nazywa się serializacją i można ją wykonać za pomocą funkcji

serializować() Konwersja ciągów na liczby Jeśli ciąg zostanie rozpoznany jako wartość liczbowa, wynikową wartość i typ określa się w następujący sposób. Jeżeli ciąg nie zawiera żadnego ze znaków „.”, „e” lub „E”, a wartość liczby mieści się w zakresie liczb całkowitych (zdefiniowanych PHP_INT_MAX ), ciąg znaków zostanie rozpoznany jako liczba całkowita ().

liczba całkowita

). We wszystkich pozostałych przypadkach uważa się ją za liczbę zmiennoprzecinkową (
platforma Wartość jest określana na początku ciągu. Jeśli linia zaczyna się od prawidłowej wartości liczbowej, zostanie użyta ta wartość. W przeciwnym razie wartość będzie wynosić 0 (zero). Prawidłowa wartość liczbowa to jedna lub więcej cyfr (które mogą zawierać przecinek dziesiętny), opcjonalnie poprzedzona znakiem, po którym następuje opcjonalny wykładnik. Wykładnikiem jest „e” lub „E”, po którym następuje jedna lub więcej cyfr.
$foo = 1 + „10,5”;
// $foo jest liczbą zmiennoprzecinkową (11.5)
$foo = 1 + "-1,3e3" ; // $foo jest liczbą zmiennoprzecinkową (-1299)
$foo = 1 + "bob-1.3e3" ; // $foo jest liczbą całkowitą (1) $foo = 1 + "bob3" ; // $foo jest liczbą całkowitą (1)
$foo = 1 + "10 małych świnek" ;
// $foo jest liczbą całkowitą (11)
?>

Aby uzyskać więcej informacji na temat tej konwersji, zobacz sekcję dotyczącą strtod(3) w dokumentacji Uniksa.

Jeśli chcesz przetestować którykolwiek z przykładów w tej sekcji, skopiuj go i wklej wraz z następującym wierszem, aby zobaczyć, co się stanie:

echo "\$foo== $foo ; wpisz: " . gettype ($foo) . "
\N" ;
?>

Nie spodziewaj się, że otrzymasz kod znaku poprzez konwersję go na liczbę całkowitą (jak ma to miejsce na przykład w C). Aby przekonwertować znaki na ich kody ASCII i odwrotnie, użyj funkcji zamówienie() I chr().

Szczegóły implementacji typu string

7 lat temu

Dokumentacja nie wspomina, ale średnik zamykający na końcu heredoc jest w rzeczywistości interpretowany jako prawdziwy średnik i jako taki czasami prowadzi do błędów składniowych.

$foo =<<abcd
KONIEC;
?>

To nie oznacza:

foo (<<abcd
KONIEC;
);
// błąd składni, nieoczekiwany „;”
?>

Bez średnika działa dobrze:

foo (<<abcd
KONIEC
);
?>

3 lata temu

Możesz użyć ciągu znaków podobnego do tablicy znaków (jak C)

$a = "Test tablicy ciągów";

var_dump($a);
// Zwróć ciąg(17) „Test tablicy ciągów”

var_dump($a);
// Zwróć ciąg(1) „S”

// -- Z rzutowaniem tablicy --
var_dump((tablica) $a);
// Zwróć tablicę(1) ( => string(17) "Test tablicy ciągów")

var_dump((tablica) $a);
// Zwróć ciąg(17) „S”

Norihiori

15 lat temu

Możesz użyć złożonej składni, aby umieścić wartość obu właściwości obiektu ORAZ metod obiektu w ciągu znaków. Na przykład...
Test klasy(
publiczny jeden $ = 1 ;
funkcja publiczna dwa() (
zwróć 2;
}
}
$test = nowy test();
echo "foo ( $test -> jeden ) bar ( $test -> dwa ()) " ;
?>
Wygeneruje „foo 1 bar 2”.

Nie możesz tego jednak zrobić dla wszystkich wartości w swojej przestrzeni nazw. Stałe klas i właściwości/metody statyczne nie będą działać, ponieważ złożona składnia szuka „$”.
Test klasy(
stała JEDEN = 1;
}
echo "foo (Test::ONE) bar";
?>
Spowoduje to wyświetlenie „foo (Test::one) bar”. Stałe i właściwości statyczne wymagają podzielenia ciągu.

3 lata temu

Uważaj, co jest zgodne z „Konwersją ciągów na liczby”:

Jeśli („123abc” == 123 ) echo „(intstr == int) błędnie sprawdza wartość true.”;

// Ponieważ jedna strona jest liczbą, ciąg znaków jest niepoprawnie konwertowany z intstr na int, co następnie odpowiada numerowi testu.

// Prawda dla wszystkich instrukcji warunkowych, takich jak instrukcje if i switch (prawdopodobnie także dla pętli while)!

// Może to stanowić ogromne zagrożenie bezpieczeństwa podczas testowania/używania/zapisywania danych wejściowych użytkownika, podczas oczekiwania i testowania wyłącznie liczby całkowitej.

// Wygląda na to, że jedyną poprawką jest ustawienie 123 na ciąg znaków jako „123”, więc konwersja nie zachodzi.

?>

6 lat temu

Zera wiodące w łańcuchach nie są (co najmniej zaskakujące) nie traktowane jako ósemkowe.
Rozważać:
$x = "0123" + 0;
$y = 0123 + 0;
echo "x to $x, y to $y"; //wypisuje „x wynosi 123, y wynosi 83”
innymi słowy:
* zera wiodące w literałach numerycznych w kodzie źródłowym są interpretowane jako „ósemkowe”, por. strtol().
* zera początkowe w łańcuchach (np. dane przesłane przez użytkownika), gdy rzutowane (domyślnie lub jawnie) na liczbę całkowitą, są ignorowane i uznawane za dziesiętne, por. strtod().

10 lat temu

Oto prosty trik, dzięki któremu łańcuchy znaków w podwójnych cudzysłowach i dokumenty heredoc mogą zawierać dowolne wyrażenia w składni nawiasów klamrowych, w tym stałe i inne wywołania funkcji:

// Deklaracja hackowania
funkcja _expr ($v) (zwróć $v ; )
$_wyrażenie = "_wyrażenie" ;

//Nasz plac zabaw
zdefiniuj("qwe" , „ASD”);
określić(„zxc”, 5 );

$a= 3 ;
$b= 4 ;

funkcjonować C($a, $b) (powrót$a+ $b; }

//Stosowanie
echo"przed{ $_wyr(1 + 2 )} opublikuj\n"; // wyświetla „przed 3 postami”
echo"przed{ $_wyr(qwe)} opublikuj\n"; // wyświetla komunikat „pre asd post”
echo"przed{ $_wyr(C($a, $b)+ zxc* 2 )} opublikuj\n"; // wyświetla „przed 17 postem”

// Ogólna składnia to ($_expr(...))
?>

2 lata temu

Pomyślałem jednak, że dodanie tego komentarza byłoby pomocne, aby informacja pojawiła się przynajmniej na właściwej stronie witryny PHP.

Pamiętaj, że jeśli zamierzasz używać ciągu znaków w cudzysłowie z kluczem skojarzeniowym, możesz napotkać błąd T_ENCAPSED_AND_WHITESPACE. Niektórzy uważają to za jeden z mniej oczywistych komunikatów o błędach.

Wyrażenie takie jak:

$owoce=tablica(
"A"=> "jabłko",
"B"=> "banan",
//itp
);

Wydrukować „To jest$owoce[ "A"]"; // T_ENCAPSED_AND_WHITESPACE
?>

z pewnością rozpadnie się na kawałki.

Można to rozwiązać w następujący sposób:

W wyrażeniach, w których wymagany jest ciąg znaków, konwersja następuje automatycznie.„To jest$owoce[ A] " ; // usuń cudzysłów z klucza
W wyrażeniach, w których wymagany jest ciąg znaków, konwersja następuje automatycznie.„To jest${ owoc[ "A"]} " ; // Złożona składnia
W wyrażeniach, w których wymagany jest ciąg znaków, konwersja następuje automatycznie.„To jest{ $owoce[ "A"]} " ; // Złożona odmiana składni
?>

Osobiście wolę ostatnią odmianę, ponieważ jest bardziej naturalna i bliższa temu, jak wyglądałoby wyrażenie poza ciągiem.

Nie jest jasne (przynajmniej dla mnie), dlaczego PHP błędnie interpretuje pojedynczy cudzysłów wewnątrz wyrażenia, ale wyobrażam sobie, że ma to coś wspólnego z faktem, że cudzysłowy nie są częścią ciągu wartości - gdy ciąg znaków jest już analizowany, cudzysłowy po prostu przeszkadzać...?

2 lata temu

Obydwa powinny działać :(

klasaTestowanie{
publiczna statyka
$VAR= "statyczny";
publiczna stała VAR =
„stała”;

Funkcja publiczna powiedz CześćStatyczny() {
echo
"Witam:{ $to:: $VAR} " ;
}

Funkcja publiczna przywitaj się, Const() {
echo
"Witam:{ $to::VAR)" ; //Błąd analizy: błąd składni, nieoczekiwany „)”, oczekiwanie „[”
}
}

$obj= nowyTestowanie();
$obj-> powiedz CześćStatyczny();
$obj-> przywitaj się, Const();

3 lata temu

Coś, czego doświadczyłem, co bez wątpienia komuś pomoże. . .
W moim edytorze podświetli to składnię HTML i komentarz $:

$html =<<<"EOD"
$komentarz
obejmujący kilka linii,

Użycie tego pokazuje ten sam kolor:

$html =<<$komentarz
obejmujący kilka linii,

co znacznie ułatwia pracę

11 lat temu

Aby zaoszczędzić swój umysł, nie czytaj poprzednich komentarzy na temat dat ;)

Gdy oba ciągi można przekonwertować na wartości liczbowe (test in („$a” > „$b”), wówczas używane są wynikowe liczby, w przeciwnym razie porównywane są PEŁNE ciągi znaków znak po znaku:

var_dump("1.22" > "01.23" ); //bool(fałsz)
var_dump("1.22.00" > "01.23.00" ); //bool(prawda)
var_dump("1-22-00" > "01-23-00" ); //bool(prawda)
var_dump((platforma)"1.22.00" > (pływać)"01.23.00" ); //bool(fałsz)
?>

Ciągi znaków w PHP są otoczone pojedynczymi lub podwójnymi cudzysłowami. Główna różnica polega na tym, że zmienną można umieścić w cudzysłowie:

Teraz możemy wymyślić inne rozwiązanie problemu z lekcji Zmienne w PHP:

$tytuł"; echo "

$treść
"; ?>

Jak PHP znajduje zmienną w ciągu znaków?

To proste. Czy pamiętasz, jakich znaków można użyć w nazwie zmiennej? Są to cyfry, litery i podkreślenia _.

Dlatego PHP przyjmuje jako nazwę wszystko, co znajduje się pomiędzy symbolem $ a pierwszym zabronionym znakiem.

W poniższym kodzie PHP błędnie określi nazwę zmiennej i zgłosi błąd:

Wynik w przeglądarce:

Uwaga: Niezdefiniowana zmienna: cena rub w D:\OpenServer\domains\site\index.php w linii 3

Aby PHP poprawnie określiło nazwę zmiennej w ciągu znaków, należy umieścić ją w nawiasach klamrowych ():

Wynik w przeglądarce:

1499 rubli

Nie ma jasnej zgody co do tego, jakich cudzysłowów należy używać w przypadku zwykłych ciągów znaków, w których nie trzeba niczego zastępować. Jednak wielu programistów woli używać pojedynczych cudzysłowów.

Faktem jest, że dla wielu osób podwójny cudzysłów wywołuje skojarzenie „coś trzeba wstawić w tę linijkę”. Dlatego zalecam używanie pojedynczych cudzysłowów w przypadku zwykłego tekstu, a podwójnych cudzysłowów tylko wtedy, gdy trzeba zastąpić zmienną w tekście. Przykład:

Ucieczka od cytatów

Jeśli chcesz umieścić cudzysłowy w ciągu znaków, możesz to zrobić na 2 sposoby:

W drugim przykładzie ukośnik odwrotny \ powoduje ucieczkę z poniższego cudzysłowu, dzięki czemu PHP traktuje go jako ciąg znaków.

Jak myślisz, co należy zrobić, aby na ekranie wyświetlały się tylko ukośniki odwrotne? W końcu ucieknie od cytatu zamykającego. To zabawne, ale musisz napisać drugi ukośnik, aby uniknąć pierwszego:

Tabele i podziały wierszy w podwójnych cudzysłowach

Ukośnik odwrotny w podwójnym cudzysłowie pozwala na ucieczkę nie tylko od cudzysłowu i samego siebie, ale także niektórych innych znaków. Najpopularniejsze to tabulator (długa spacja pojawiająca się po naciśnięciu klawisza TAB) i podział wiersza. Wyglądają tak:

Napisz skrypt, który:
1. Tworzy zmienną $type o wartości Game.
2. Tworzy zmienną $name o wartości „World of Warcraft” (w cudzysłowie).
3. Wyświetla obie zmienne wewnątrz znacznika

. Pomiędzy zmiennymi musi znajdować się spacja.

Wartościami typu string są ciągi tekstowe (w skrócie stringi). Ciąg to sekwencja zera lub większej liczby znaków. Znaki obejmują litery, cyfry, znaki interpunkcyjne, znaki specjalne i spacje.

Ciąg można zdefiniować na cztery różne sposoby:

  • podwójne cudzysłowy
  • pojedyncze cudzysłowy
  • składnia heredoc
  • składnia nowdoc

Ciąg w podwójnym cudzysłowie

Ciąg w podwójnym cudzysłowie:

Sekwencji ucieczki można używać w ciągach znaków ujętych w cudzysłowy. Sekwencja kontrolna— są to znaki specjalne przeznaczone do formatowania tekstu wyjściowego. W PHP dostępne są następujące sekwencje ucieczki:

Główną właściwością ciągów znaków w cudzysłowie jest możliwość obsługi zmiennych w obrębie ciągów.


Znak dolara: \$";

Ciągi ujęte w cudzysłów mogą zawierać znaki pojedynczego cudzysłowu:

Echo "Pojedynczy cudzysłów: "";

Ciąg znaków w pojedynczym cudzysłowie (apostrofie)

Ciąg w pojedynczym cudzysłowie:

$str = "Ciąg"; echo "Jedną dużą linię można podzielić na kilka mniejszych, aby była czytelniejsza.";

W przeciwieństwie do ciągów znaków ujętych w podwójne cudzysłowy i składni heredoc, zmienne i sekwencje sterujące (z jednym wyjątkiem) ujęte w pojedyncze cudzysłowy nie są przetwarzane. Oznacza to, że będą one interpretowane jako zwykłe znaki łańcuchowe:

$liczba = 10; echo "Numer: $num
Znak dolara: \$";

Aby móc używać pojedynczych cudzysłowów w ciągu znaków ujętych w pojedyncze cudzysłowy, musisz uciec od nich za pomocą ukośnika odwrotnego (\). Jeśli chcesz zapisać sam ukośnik odwrotny, musisz go zduplikować (\\):

Echo "Użyj `pojedynczych' cudzysłowów wewnątrz"; echo "Odwrócony ukośnik: \\";

Ciągi ujęte w pojedyncze cudzysłowy mogą zawierać znaki podwójnego cudzysłowu:

Echo "Podwójny cudzysłów: "";

Składnia Heredoc

Składnia Heredoc to alternatywny sposób pisania ciągów.

Ciąg zdefiniowany przy użyciu składni Heredoc działa tak samo, jak ciąg znaków ujęty w podwójny cudzysłów. Różnica między Heredoc a ciągiem znaków w podwójnym cudzysłowie polega na tym, że w przypadku Heredoc nie ma potrzeby uciekania przed podwójnymi cudzysłowami.

Składnia Heredoc zaczyna się od trzech znaków<<< , после которых должен быть указан произвольный идентификатор (назовём его открывающим). Идентификатор может быть указан как в двойных кавычках, так и без них. Od razu po identyfikatorze musi następować znak nowej linii; po identyfikatorze nie mogą występować żadne inne znaki niż znak nowej linii, w przeciwnym razie wystąpi błąd. Następnie pojawia się sama treść ciągu. Po treści stringa w osobnej linii należy podać identyfikator zamykający (taki sam jak after<<<). Перед ним и после него не должно быть никаких пробелов или других символов, за исключением точки с запятой. Если это правило нарушено, то считается, что закрывающий идентификатор отсутствует и будет вызвана ошибка:

<<

Składnia Nowdoc

Składnia Nowdoc, podobnie jak Heredoc, jest alternatywnym sposobem pisania ciągów.

Ciąg zdefiniowany przy użyciu składni Nowdoc działa tak samo, jak ciąg znaków ujęty w pojedyncze cudzysłowy. Różnica między Nowdoc a ciągiem znaków w pojedynczym cudzysłowie polega na tym, że w przypadku Nowdoc nie ma potrzeby uciekania od pojedynczych cudzysłowów.

Składnia Nowdoc jest podobna do Heredoc, z tą tylko różnicą, że identyfikator otwarcia musi być ujęty w pojedynczy cudzysłów:

$liczba = 10; echo<<<"some_id" Число: $num some_id;

Obsługa zmiennych w łańcuchach

Istnieją dwa typy składni obsługi zmiennych w łańcuchach: prosty I trudny.

Prosta składnia- ma to miejsce, gdy nazwa zmiennej jest wskazywana w wierszu w niezmienionej postaci.

Gdy interpreter napotka znak dolara, rozpoczyna sekwencyjne sprawdzanie, czy wszystkie kolejne znaki w nazwie zmiennej są prawidłowymi znakami. Aby więc utworzyć prawidłową nazwę zmiennej, przechwytuje ona jak najwięcej znaków:

$str = "Świat!"; echo "Witam $str";

Złożona składnia- ma to miejsce, gdy nazwa zmiennej jest ujęta w nawiasy klamrowe.

Ponieważ interpreter, aby przetworzyć zmienną w wierszu, przechwytuje jak najwięcej znaków, zdarzają się sytuacje, w których interpreter nie jest w stanie samodzielnie określić, gdzie kończy się nazwa zmiennej:

$sport1 = "będzie"; $sport2 = "stopa"; echo "Lubię $sport1ball i $sport2ball";

W tym przypadku pożądany rezultat nie zostanie osiągnięty, ponieważ interpreter uzna $sport1 za część nazwy zmiennej $sport1bol, która nie istnieje.

Aby wyraźnie powiedzieć interpreterowi, gdzie kończy się nazwa zmiennej, musisz ująć nazwę zmiennej w nawiasy klamrowe:

$sport1 = "będzie"; $sport2 = "stopa"; echo "Lubię ($sport1)bol i ($sport2)bol.";

Znak dolara można umieścić przed lub po nawiasie klamrowym:

$sport1 = "będzie"; $sport2 = "stopa"; echo "Lubię $(sport1)bol i ($sport2)bol.";

Powiązanie

Konkatenacja to połączenie dwóch lub większej liczby ciągów w jeden większy ciąg. Konkatenacja odbywa się za pomocą operatora konkatenacji - . (kropka). Podczas łączenia każda kolejna linia jest dodawana na końcu poprzedniej:

Wartość dowolnego typu połączona z ciągiem znaków zostanie niejawnie przekonwertowana na ciąg znaków, a następnie połączona:

"; echo "Numer: " . 1; ?>

Jakiego rodzaju cudzysłowów należy używać do formatowania ciągów znaków – apostrofów czy klasycznych podwójnych cudzysłowów?

Przyjrzyjmy się różnicy między cudzysłowami podwójnymi i pojedynczymi w PHP i skorzystajmy z przykładów, aby dowiedzieć się, kiedy którego użyć.

Zmienne i sekwencje specjalne znaków specjalnych znajdujących się w ciągach znaków ujętych w pojedyncze cudzysłowy nie są przetwarzane. Ciągi znaków otoczone apostrofami są przetwarzane przez interpreter PHP znacznie szybciej niż podobne ciągi znaków otoczone podwójnymi cudzysłowami.

Powód jest prosty: interpreter PHP dodatkowo sprawdza ciągi znaków ujęte w cudzysłów pod kątem obecności zmiennych, a jeśli zostaną znalezione, to zamiast nazwy zmiennej wstawiana jest do ciągu jej wartość. Jednak linia ujęta w apostrofy jest postrzegana przez interpreter jako zwykły tekst i PHP nie dokonuje w tych liniach żadnych przekształceń. Myślę, że jasne jest, że przetwarzanie ciągów znaków w pojedynczych cudzysłowach i tak będzie szybsze.

Najpierw opiszemy jak zdefiniować ciąg znaków, a następnie sprawdźmy o ile szybciej będzie przetwarzać ciągi znaków ujęte w apostrofy.

Najprostszym sposobem zdefiniowania ciągu jest umieszczenie go w cudzysłowie pojedynczym ("). Aby użyć cudzysłowu w ciągu pojedynczym, należy go poprzedzić ukośnikiem odwrotnym (\), czyli znakiem ucieczki. Jeśli ukośnik odwrotny musi nastąpić przed pojedynczym cudzysłowem lub na końcu linii, musisz go zduplikować. Jeśli spróbujesz uciec przed jakimkolwiek innym znakiem, wydrukowany zostanie również ukośnik odwrotny.

Oto przykład użycia pojedynczych cudzysłowów:
// Dane wyjściowe: prosty ciąg
echo "Prosty ciąg znaków";
// Drukuje: Jestem tutaj
echo "Jestem tutaj";
// Dane wyjściowe: To nie spowoduje wstawienia: \n nowej linii
echo "To nie zostanie wstawione:\nnewline";
// Dane wyjściowe: Zmienna $example również nie zostanie zastąpiona
echo "Zmienna $przykład również nie zostanie zastąpiona";

Jeśli ciąg znaków jest ujęty w cudzysłów ("), PHP rozpoznaje więcej sekwencji ucieczki dla znaków specjalnych, a także zastępuje wartość nazwy zmiennej w ciągu. Podobnie jak w przypadku pojedynczych cudzysłowów, aby użyć podwójnych cudzysłowów w ciągu znaków ujętym w podwójne cudzysłowy, muszą być poprzedzone ukośnikiem odwrotnym (\).
// Dane wyjściowe: prosty ciąg
echo "Prosty ciąg znaków";
Oto przykład użycia podwójnych cudzysłowów:
// Wyniki: Firma „Przebiśnieg”
echo "Firma \"Przebiśnieg\"";
// Dane wyjściowe: doprowadzi to do nowej linii
echo "To spowoduje przejście do nowej linii \n";
// Dane wyjściowe: Zmienna zostanie podstawiona
echo "Zmienna $przykład";

Powinieneś także pamiętać, że sekwencja „\n” (nowa linia), „\r” (powrót karetki) dotyczy zwykłego tekstu, a nie HTML. Nie zobaczysz więc zmian w przeglądarce (tylko w kodzie źródłowym strony).
Przekonajmy się, o ile szybsze są pojedyncze cudzysłowy niż podwójne cudzysłowy. Do pomiarów napiszemy krótki skrypt testowy i od razu zauważymy, że jeśli przetestujesz go samodzielnie, wyniki, które zależą od sprzętu Twojego komputera lub serwera, będą inne.
// Zwraca znacznik czasu na początku pętli
$start = mikrotime(true);
// Utwórz pętlę na 1 milion iteracji< 1000000; $i++) {
dla ($i = 0; $i
}
$text = "Oto ciąg znaków";
// Oblicz spędzony czas

$czas = (mikrotime(true) - $start);
Wynik: 0,09 sekundy.

Jeśli zastąpimy pojedyncze cudzysłowy podwójnymi cudzysłowami:
$text = "Oto ciąg znaków";
Wynik będzie wynosił 0,10 sekundy.

Jak widać, przy użyciu ciągów tekstowych różnica w czasie wykonania jest bardzo mała, można nawet powiedzieć, że w ogóle nie istnieje. Zabawa zaczyna się, gdy próbujemy połączyć ciąg znaków ze zmienną.

$text = "Oto ciąg znaków $i";

Lub

Pojedyncze cytaty

$text = $i."Oto ciąg znaków";

Wynik w przybliżeniu: 0,27 sekundy.

Różnica jest dość zauważalna. Łączenie i podwójne cudzysłowy wyraźnie wpływają na wydajność, gdy zmienne są dodawane do ciągu.

Kiedy serwer przetwarza kod, sprawdza całą zawartość podwójnych cudzysłowów pod kątem zmiennych, stałych i innych. To wymaga czasu. A serwer przetwarza to, co znajduje się pomiędzy pojedynczymi cudzysłowami, jako gotowy tekst i nie przejmuje się tym, co tam jest. Różnica między wydajnością pojedynczych i podwójnych cudzysłowów jest bardzo mała, ale jeśli tworzysz bardzo obciążony projekt, to zaoszczędzone kilka milisekund jest już zwycięstwem.:

Podwójne cudzysłowy

Nie jest tajemnicą, że cytaty w PHP mogą być pojedyncze lub podwójne. Dowiedzmy się, kiedy określone użycie cudzysłowów jest bardziej odpowiednie.

Najprostszym sposobem zdefiniowania ciągu jest ujęcie tekstu w pojedyncze cudzysłowy.

Ciąg znaków ujęty w cudzysłów rozpoznaje większość sekwencji ucieczki dla znaków specjalnych.

Najważniejszą różnicą jest fakt, że podwójne cudzysłowy obsługują zmienne.

Przykłady użycia podwójnych cudzysłowów:

Skupmy się na tym, że ciągi znaków z podwójnymi cudzysłowami obsługują zmienne.

Co się stanie, gdy ciąg zostanie przetworzony? Interpretator sprawdź każdy ciąg znaków w cudzysłowie pod kątem zmiennych, tj. następuje wymuszona analiza składniowa, która zajmuje dodatkowy czas. Tak, często jest to ułamek sekundy, ale sam fakt trzeba zrozumieć. Oznacza to, że jeśli porównasz przetwarzanie jednego ciągu znaków z różnymi cudzysłowami (oczywiście bez zmiennych), to ciąg znaków z pojedynczymi cudzysłowami na pewno zostanie przetworzony szybciej.

Obliczenia

Ciekawe obliczenia na ten temat znalazłem na stronie ProfiPHP. Autor napisał prosty skrypt, za pomocą którego obliczał czas przetwarzania ciągów znaków.

© 2024 ermake.ru - O naprawie komputerów PC - Portal informacyjny