please note that when arrays are copied, the "reference status" of their members is preserved (http://www.php.net/manual/en/language.references.whatdo.php).Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π³Π»Π°Π²Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Β«Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈΒ».
ΠΠ°ΡΡΠΈΠ² Π² PHP β ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ»ΡΡΠΈ. ΠΡΠΎΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΠΏΠΈΡΠΊΠΎΠΌ (Π²Π΅ΠΊΡΠΎΡΠΎΠΌ), Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ°ΡΡΡ), ΡΠ»ΠΎΠ²Π°ΡΡΠΌ, ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ, ΡΡΠ΅ΠΊΠΎΠΌ, ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΅ΠΌ-ΡΠΎ Π΅ΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π±ΡΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π΅ΡΠ΅Π²ΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°, Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ . ΠΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΌΡ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎ ΡΡΠΎΠΉ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠ΅.
ΠΠ°ΡΡΠΈΠ² (array) ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ array().
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΡ
Π·Π°ΠΏΡΡΡΠΌΠΈ ΠΏΠ°Ρ
ΠΊΠ»ΡΡ => Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
array(
key => value,
key2 => value2,
key3 => value3,
...
)
ΠΠ°ΠΏΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°; ΠΏΡΠΎΠΏΡΡΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠΎΠ½Π΅ΡΠ½ΡΡ Π·Π°ΠΏΡΡΡΡ ΡΠ°ΡΡΠΎ ΠΎΠΏΡΡΠΊΠ°ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², β Π»ΡΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΡΡ array(1, 2)
Π²ΠΌΠ΅ΡΡΠΎ array(1, 2, ). ΠΠ»Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π½Π°ΠΎΠ±ΠΎΡΠΎΡ,
ΡΠ°ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ Π·Π°ΠΏΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅
Π½ΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
PHP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ
array()Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ[].
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΎΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²
<?php
$array1 = array(
"foo" => "bar",
"bar" => "foo",
);
// Π Π°Π±ΠΎΡΠ° Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°
$array2 = [
"foo" => "bar",
"bar" => "foo",
];
var_dump($array1, $array2);Π PHP ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ (int) ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ (string) ΠΊΠ»ΡΡΠΈ. Π’ΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ°:
+.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ "8" ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΡ
ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 8. ΠΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "08"
Π½Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌ ΡΠ΅Π»ΡΠΌ.
8.7 ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ 8.
true ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ 1,
Π° ΠΊΠ»ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ false β ΠΊΠ°ΠΊ 0.
null ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ "".
Illegal offset type.
PHP ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π΅ΡΠ»ΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅Ρ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΠ²ΡΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΊΠ»ΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
ΠΡΠΈΠΌΠ΅Ρ #2 ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
var_dump($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(1) {
[1]=>
string(1) "d"
}
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ 1,
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅, ΠΈ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "d", ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΎΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ.
PHP ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ (int) ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ (string) ΠΊΠ»ΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ PHP ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ ΠΈ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΡΠΈΠΌΠ΅Ρ #3 Π‘ΠΌΠ΅ΡΠ°Π½Π½ΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ (int) ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ (string) ΠΊΠ»ΡΡΠΈ
<?php
$array = array(
"foo" => "bar",
"bar" => "foo",
100 => -100,
-100 => 100,
);
var_dump($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(4) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
[100]=>
int(-100)
[-100]=>
int(100)
}
ΠΠ»ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½: ΠΊΠ»ΡΡΠΎΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΊΠ»ΡΡ, ΡΡΠ°Π½Π΅Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ (int) ΠΊΠ»ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ #4 ΠΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π±Π΅Π· ΠΊΠ»ΡΡΠ°
<?php
$array = array("foo", "bar", "hallo", "world");
var_dump($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(4) {
[0]=>
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(5) "hallo"
[3]=>
string(5) "world"
}
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ»ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ :
ΠΡΠΈΠΌΠ΅Ρ #5 ΠΠ»ΡΡΠΈ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
<?php
$array = array(
"a",
"b",
6 => "c",
"d",
);
var_dump($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "d" ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΎΡΡ ΠΊΠ»ΡΡΡ
7. ΠΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ
ΡΠ°ΠΌΡΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π±ΡΠ»ΠΎ 6.
ΠΡΠΈΠΌΠ΅Ρ #6 Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
<?php
$array = array(
1 => 'a',
'1' => 'b', // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "b" ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "a"
1.5 => 'c', // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "c" ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "b"
-1 => 'd',
'01' => 'e', // Π‘ΡΡΠΎΠΊΠ° ΠΠ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ ΠΊΠ»ΡΡ 1, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π½Π΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ
'1.5' => 'f', // Π‘ΡΡΠΎΠΊΠ° ΠΠ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ ΠΊΠ»ΡΡ 1, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π½Π΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ
true => 'g', // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "g" ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "c"
false => 'h',
'' => 'i',
null => 'j', // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "j" ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "i"
'k', // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "k" ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡΡ 2, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π±ΡΠ» 1
2 => 'l', // ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "l" ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "k"
);
var_dump($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(7) {
[1]=>
string(1) "g"
[-1]=>
string(1) "d"
["01"]=>
string(1) "e"
["1.5"]=>
string(1) "f"
[0]=>
string(1) "h"
[""]=>
string(1) "j"
[2]=>
string(1) "l"
}
ΠΡΠΈΠΌΠ΅Ρ #7 ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ
ΠΡΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° n,
PHP ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ»ΡΡ n + 1.
<?php
$array = [];
$array[-5] = 1;
$array[] = 2;
var_dump($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(2) {
[-5]=>
int(1)
[-4]=>
int(2)
}
ΠΠΎ PHP 8.3.0 Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° n
ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΎ Π±Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΊΠ»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
Π²ΡΠ²Π΅Π» Π±Ρ:
array(2) {
[-5]=>
int(1)
[0]=>
int(2)
}
ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ array[key].
ΠΡΠΈΠΌΠ΅Ρ #8 ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°
<?php
$array = array(
"foo" => "bar",
42 => 24,
"multi" => array(
"dimensional" => array(
"array" => "foo"
)
)
);
var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
string(3) "bar" int(24) string(3) "foo"
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎ PHP 8.0.0 ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΠΈ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅
$array[42]ΠΈ$array{42}Π΄Π΅Π»Π°Π»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅). Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΡΡΡΠ°ΡΠ΅Π» Ρ PHP 7.4.0 ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Ρ PHP 8.0.0.
ΠΡΠΈΠΌΠ΅Ρ #9 Π Π°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
<?php
function getArray()
{
return array(1, 2, 3);
}
$secondElement = getArray()[1];
var_dump($secondElement);ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎΠΏΡΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ β ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ: Π²ΡΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΎΠ²Π½Ρ
E_WARNINGΠΈΠ»ΠΈ Π΄ΠΎ PHP 8.0.0 ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΎΠ²Π½ΡE_NOTICE, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π½ΡΠ΅ΡΡΡnull.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ Π½Π΅ ΠΌΠ°ΡΡΠΈΠ², Π° ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΡΠΎΠΊΠΈ (string), ΠΎΡΠ΄Π°ΡΡ
null, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ string ΡΡΠ°ΠΊΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΡΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π΄ΠΎ PHP 7.4.0 Π½Π΅ Π²ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. Π‘ PHP 7.4.0 Π²ΡΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΎΠ²Π½ΡE_NOTICE; Ρ PHP 8.0.0 Π²ΡΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΠΎΠ²Π½ΡE_WARNING.
ΠΠ°ΡΡΠΈΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΡΡΠΌ ΡΠ²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΊΠ»ΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΊΠ°Ρ
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° (array),
Π° ΠΏΠ°ΡΠ° ΠΏΡΡΡΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ [] Π΄ΠΎΠ±Π°Π²ΠΈΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
$arr[key] = value;
$arr[] = value;
// Π ΠΊΠ»ΡΡΠ΅ key ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² int ΠΈΠ»ΠΈ string,
// Π° Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ value β Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°
PHP ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $arr Π΅ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ
ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null ΠΈΠ»ΠΈ false,
ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² array. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ
ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $arr
ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ string-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°,
ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ []
ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΡΡΠΎΠΊΠ΅.
ΠΡΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΡΠΌΡΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 7.1.0 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π½Π° ΡΡΡΠΎΠΊΠ΅ Π²ΡΠ±ΡΠΎΡΠΈΡ ΡΠ°ΡΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ. Π Π°Π½ΡΡΠ΅ ΡΡΡΠΎΠΊΠ° ΠΌΠΎΠ»ΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π»Π°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ².
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π‘ PHP 8.1.0 ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
false, ΡΡΡΠ°ΡΠ΅Π». Π‘ΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡnullΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½.
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ»ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΡΡ Β«ΠΊΠ»ΡΡ β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β» ΡΠ΄Π°Π»ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ unset().
ΠΡΠΈΠΌΠ΅Ρ #10 Π Π°Π±ΠΎΡΠ° Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ
<?php
$arr = array(5 => 1, 12 => 2);
$arr[] = 56; // Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ°ΠΊΠΎΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ
// ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ $arr[13] = 56;
$arr["x"] = 42; // ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ
// ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΊΠ»ΡΡΠΎΠΌ "x"
unset($arr[5]); // Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°
var_dump($arr);
unset($arr); // ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ²
var_dump($arr);ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΠΊΠ»ΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½, Π½ΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΡΡΠ°Π½Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ +
1. ΠΡΠ»ΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΊΠ»ΡΡΠΎΠΌ ΡΡΠ°Π½Π΅Ρ0. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 8.3.0 ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ, Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. PHP Π²ΡΡΠΈΡΠ»ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠ²Π»ΡΠ»ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠΈ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ:
<?php
// Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ².
$array = array(1, 2, 3, 4, 5);
print_r($array);
// Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½ΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π΅ΡΡΠΎΠ½ΡΡΡΠΌ:
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);
// ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½ΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΡΡΠ°Π½Π΅Ρ 5, Π° Π½Π΅ 0).
$array[] = 6;
print_r($array);
// ΠΠ΅ΡΠ΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ:
$array = array_values($array);
$array[] = 7;
print_r($array);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) Array ( ) Array ( [5] => 6 ) Array ( [0] => 6 [1] => 7 )
ΠΠ°ΡΡΠΈΠ²Ρ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ [] (Π½Π°ΡΠΈΠ½Π°Ρ Ρ PHP 7.1.0)
ΠΈΠ»ΠΈ list(). ΠΡΠΈ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
Π΄Π»Ρ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ #11 ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°
<?php
$source_array = ['foo', 'bar', 'baz'];
[$foo, $bar, $baz] = $source_array;
echo $foo, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ "foo"
echo $bar, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ "bar"
echo $baz, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ "baz"
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ foreach
Π΄Π»Ρ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΡΠΈΠΌΠ΅Ρ #12 ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ foreach
<?php
$source_array = [
[1, 'John'],
[2, 'Jane'],
];
foreach ($source_array as [$id, $name]) {
echo "{$id}: '{$name}'\n";
}
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° 0.
ΠΡΠΈΠΌΠ΅Ρ #13 ΠΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
<?php
$source_array = ['foo', 'bar', 'baz'];
// ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 2 ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $baz
[, , $baz] = $source_array;
echo $baz; // ΠΡΠ²Π΅Π΄Π΅Ρ "baz"ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 7.1.0 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²ΡΠ±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ #14 ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
<?php
$source_array = ['foo' => 1, 'bar' => 2, 'baz' => 3];
// ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 'baz' ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $three
['baz' => $three] = $source_array;
echo $three, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ 3
$source_array = ['foo', 'bar', 'baz'];
// ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 2 ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $baz
[2 => $baz] = $source_array;
echo $baz, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ "baz"ΠΠ°ΡΡΠΈΠ² Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ #15 ΠΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
<?php
$a = 1;
$b = 2;
[$b, $a] = [$a, $b];
echo $a, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ 2
echo $b, PHP_EOL; // ΠΡΠ²Π΅Π΄Π΅Ρ 1ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ
...Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡΡ .
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎΠΏΡΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ: Π²ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΡΠΎΠ²Π½Ρ
E_WARNING, ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΡΠΎΠ²Π½ΡE_NOTICEΠ΄ΠΎ PHP 8.0.0, Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅null.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
nullΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈΒ».
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
Π―Π·ΡΠΊΠΎΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ unset() ΡΠΌΠ΅Π΅Ρ ΡΠ΄Π°Π»ΡΡΡ ΠΊΠ»ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΠ ΠΏΠ΅ΡΠ΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ. ΠΠ°ΡΡΠΈΠ² ΠΏΠ΅ΡΠ΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ array_values(), Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠΈΠ»Π΅ Β«ΡΠ΄Π°Π»ΠΈΡΡ ΠΈ ΡΠ΄Π²ΠΈΠ½ΡΡΡΒ».
ΠΡΠΈΠΌΠ΅Ρ #16 Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
<?php
$a = array(1 => 'ΠΎΠ΄ΠΈΠ½', 2 => 'Π΄Π²Π°', 3 => 'ΡΡΠΈ');
/* Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π΅Π³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠ°ΠΊ:
$a = array(1 => 'ΠΎΠ΄ΠΈΠ½', 3 => 'ΡΡΠΈ');
Π½ΠΎ ΠΠ ΡΠ°ΠΊ:
$a = array(1 => 'ΠΎΠ΄ΠΈΠ½', 2 => 'ΡΡΠΈ');
*/
unset($a[2]);
var_dump($a);
$b = array_values($a);
// Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $b ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ array(0 => 'ΠΎΠ΄ΠΈΠ½', 1 => 'ΡΡΠΈ')
var_dump($b);
Π£ΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ foreach ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² ΡΠ·ΡΠΊΠ΅ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±Ρ
ΠΎΠ΄Π° ΠΌΠ°ΡΡΠΈΠ²Π°.
$foo[bar] Π½Π΅Π²Π΅ΡΠ½ΠΎ?
Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π»ΠΈΡΠ΅ΡΠ°Π» Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π»ΡΡΡΠ΅ Π±ΡΠ°ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ $foo['bar'],
Π° Π½Π΅ $foo[bar]. ΠΠΎ ΠΏΠΎΡΠ΅ΠΌΡ? Π‘ ΡΡΠ°ΡΡΡ
ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
<?php
$foo[bar] = 'Π²ΡΠ°Π³';
echo $foo[bar];
// ΠΈ Ρ. Π΄.
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ»ΡΡ Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ, Ρ
ΠΎΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΈΡΠΈΠ½Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅Π·Π°ΠΊΠ°Π²ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
ΠΊΠ°ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ bar, Π° Π½Π΅ ΡΡΡΠΎΠΊΠΈ 'bar' β Π»ΠΈΡΠ΅ΡΠ°Π»Π° Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ
.
ΠΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ·-Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
Β«Π³ΠΎΠ»ΠΎΠΉ ΡΡΡΠΎΠΊΠΈΒ» β ΡΡΡΠΎΠΊΠΈ Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ,
ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, β Π² ΡΡΡΠΎΠΊΡ
ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΎΠΉ Β«Π³ΠΎΠ»ΠΎΠΉ ΡΡΡΠΎΠΊΠΈΒ». PHP ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ bar
ΡΡΡΠΎΠΊΡ 'bar',
Π΅ΡΠ»ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ bar.
Π Π΅Π·Π΅ΡΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΊΠ°ΠΊ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΠΎΠ²Π½Ρ E_NOTICE.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 7.2.0 ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ
ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΠΎΠ²Π½Ρ E_WARNING.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 8.0.0 ΡΠ΄Π°Π»Π΅Π½ΠΎ ΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Error.
ΠΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ. Π ΠΊΠ°Π²ΡΡΠΊΠΈ Π½Π΅ Π±Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π°ΠΊΠ°Π²ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΠΈΠΌΠ΅Ρ #17 ΠΠ°ΠΊΠ°Π²ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', false);
// ΠΡΠΎΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²:
$array = array(1, 2);
$count = count($array);
for ($i = 0; $i < $count; $i++) {
echo "\nΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ $i: \n";
echo "ΠΠ»ΠΎΡ
ΠΎ: " . $array['$i'] . "\n";
echo "Π₯ΠΎΡΠΎΡΠΎ: " . $array[$i] . "\n";
echo "ΠΠ»ΠΎΡ
ΠΎ: {$array['$i']}\n";
echo "Π₯ΠΎΡΠΎΡΠΎ: {$array[$i]}\n";
}Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ 0: Notice: Undefined index: $i in /path/to/script.html on line 9 ΠΠ»ΠΎΡ ΠΎ: Π₯ΠΎΡΠΎΡΠΎ: 1 Notice: Undefined index: $i in /path/to/script.html on line 11 ΠΠ»ΠΎΡ ΠΎ: Π₯ΠΎΡΠΎΡΠΎ: 1 ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ 1: Notice: Undefined index: $i in /path/to/script.html on line 9 ΠΠ»ΠΎΡ ΠΎ: Π₯ΠΎΡΠΎΡΠΎ: 2 Notice: Undefined index: $i in /path/to/script.html on line 11 ΠΠ»ΠΎΡ ΠΎ: Π₯ΠΎΡΠΎΡΠΎ: 2
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ ΡΡΠΎΡ ΡΠ°ΠΊΡ:
ΠΡΠΈΠΌΠ΅Ρ #18 ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ
<?php
// ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ
error_reporting(E_ALL);
$arr = array('fruit' => 'apple', 'veggie' => 'carrot');
// ΠΠ΅ΡΠ½ΠΎ
echo $arr['fruit'], PHP_EOL; // apple
echo $arr['veggie'], PHP_EOL; // carrot
// ΠΠ΅Π²Π΅ΡΠ½ΠΎ. ΠΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ PHP-ΠΎΡΠΈΠ±ΠΊΡ Error ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
// Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ fruit
//
// Error: Undefined constant "fruit"
try {
echo $arr[fruit];
} catch (Error $e) {
echo get_class($e), ': ', $e->getMessage(), PHP_EOL;
}
// ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ,
// ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠΈΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ fruit Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "veggie".
define('fruit', 'veggie');
// Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π½ΠΈΡΡ
echo $arr['fruit'], PHP_EOL; // apple
echo $arr[fruit], PHP_EOL; // carrot
// ΠΠΎΡΡΡΠΏ ΠΏΠΎ ΠΊΠ»ΡΡΡ Π±Π΅Π· ΠΊΠ°Π²ΡΡΠ΅ΠΊ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊΠΈ. PHP Π½Π΅ ΠΈΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊ,
// ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΈΠ±ΠΊΠ° Π·Π΄Π΅ΡΡ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ
echo "Hello $arr[fruit]", PHP_EOL; // Hello apple
// ΠΠ° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ: PHP ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ,
// Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΠΎΠ±Π΅ΡΠ½ΡΠ»ΠΈ ΡΠΈΠ³ΡΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ
echo "Hello {$arr[fruit]}", PHP_EOL; // Hello carrot
echo "Hello {$arr['fruit']}", PHP_EOL; // Hello apple
// ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° β ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΡ
echo "Hello " . $arr['fruit'], PHP_EOL; // Hello apple<?php
// ΠΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ°Π·Π±ΠΎΡΠ° Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'.
// ΠΡΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ ΠΊ ΡΡΠΏΠ΅ΡΠ³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π² ΡΡΡΠΎΠΊΠ°Ρ
print "Hello $arr['fruit']";
print "Hello $_GET['foo']";
ΠΠ°ΠΊ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π» ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅,
Π²Π½ΡΡΡΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ '[' ΠΈ ']' ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
<?php
echo $arr[somefunc($bar)];ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°. PHP ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°Π΅Ρ ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°Ρ :
<?php
$error_descriptions[E_ERROR] = "ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΡΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°";
$error_descriptions[E_WARNING] = "PHP ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΈ";
$error_descriptions[E_NOTICE] = "ΠΡΠΎ Π»ΠΈΡΡ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅";
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ E_ERROR β ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅
Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠ°ΠΊ ΠΈ bar Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ:
<?php
$error_descriptions[1] = "ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΡΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°";
$error_descriptions[2] = "PHP Π²ΡΠ΄Π°Π» ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅";
$error_descriptions[8] = "ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅";
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ E_ERROR ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 1 ΠΈ Ρ. Π΄.
ΠΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² PHP, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ
ΠΎΡΠ΅Ρ
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠ·
Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
ΡΠ»ΠΎΠ²Π° empty ΠΈ
default, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ
Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²Π°ΠΌ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎΠ²ΡΠΎΡΠΈΠΌ, Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊΠΈ (string) Π² Π΄Π²ΠΎΠΉΠ½ΡΡ ΠΊΠ°Π²ΡΡΠΊΠ°Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ Π½Π΅ ΠΎΠΊΡΡΠΆΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ
"$foo[bar]"β Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°Ρ Π·Π°ΠΏΠΈΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π²ΡΡΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π°Π½Π° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΡΡΠΎΠΊΠ°Ρ .
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° (int), ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ (float),
ΡΡΡΠΎΠΊΠΈ (string), Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (bool) ΠΈΠ»ΠΈ ΡΠ΅ΡΡΡΡΠ° (resource)
Π² ΠΌΠ°ΡΡΠΈΠ² β ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²
Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π»ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ
Π±ΡΠ» ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½. ΠΠΎΠ²ΠΎΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (array) $scalarValue
Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ array($scalarValue).
ΠΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (object) Π² ΠΌΠ°ΡΡΠΈΠ²
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ)
ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ»ΡΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
-ΡΠ»Π΅Π½ΠΎΠ², ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ
ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ: ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ;
ΠΊ Π·Π°ΠΊΡΡΡΡΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΊΠ»Π°ΡΡΠ° (private) Π² Π½Π°ΡΠ°Π»ΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°;
ΠΊ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΊΠ»Π°ΡΡΠ° (protected) Π² Π½Π°ΡΠ°Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» '*'.
ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΠΎΠΈΡ
ΡΡΠΎΡΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ NUL-Π±Π°ΠΉΡΡ.
ΠΠ΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ #19 ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ²
<?php
class A
{
private $B;
protected $C;
public $D;
function __construct()
{
$this->{1} = null;
}
}
var_export((array) new A());Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array ( '' . "\0" . 'A' . "\0" . 'B' => NULL, '' . "\0" . '*' . "\0" . 'C' => NULL, 'D' => NULL, 1 => NULL, )
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:
ΠΡΠΈΠΌΠ΅Ρ #20 ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ
<?php
class A
{
private $A; // Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΠ°Π½Π΅Ρ ΠΊΠ»ΡΡΠΎΠΌ '\0A\0A'
}
class B extends A
{
private $A; // Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΠ°Π½Π΅Ρ ΠΊΠ»ΡΡΠΎΠΌ '\0B\0A'
public $AA; // Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΡΡΠ°Π½Π΅Ρ ΠΊΠ»ΡΡΠΎΠΌ 'AA'
}
var_dump((array) new B());Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
array(3) {
["BA"]=>
NULL
["AA"]=>
NULL
["AA"]=>
NULL
}
ΠΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ 2 ΠΊΠ»ΡΡΠ° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ 'AA', Ρ ΠΎΡΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ '\0A\0A'.
ΠΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²,
Π΅ΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null.
ΠΠ°ΡΡΠΈΠ²Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ array_diff() ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
ΠΠ°ΡΡΠΈΠ², ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ..., ΡΠ°ΡΠΏΠ°ΠΊΡΠ΅ΡΡΡ Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
Traversable.
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° spread-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ... Π΄ΠΎΡΡΡΠΏΠ½Π° Ρ PHP 7.4.0.
PHP ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ...:
ΠΡΠΈΠΌΠ΅Ρ #21 ΠΡΠΎΡΡΠ°Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π°
<?php
// ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°.
// Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ array().
$arr1 = [1, 2, 3];
$arr2 = [...$arr1]; // [1, 2, 3]
$arr3 = [0, ...$arr1]; // [0, 1, 2, 3]
$arr4 = [...$arr1, ...$arr2, 111]; // [1, 2, 3, 1, 2, 3, 111]
$arr5 = [...$arr1, ...$arr1]; // [1, 2, 3, 1, 2, 3]
function getArr() {
return ['a', 'b'];
}
$arr6 = [...getArr(), 'c' => 'd']; // ['a', 'b', 'c' => 'd'];
var_dump($arr1, $arr2, $arr3, $arr4, $arr5, $arr6);
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ... ΡΠΎΠ±Π»ΡΠ΄Π°Π΅Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ array_merge(),
ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠ΅, Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΡΠΌΠ΅ΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ:
ΠΡΠΈΠΌΠ΅Ρ #22 Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ
<?php
// Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ
$arr1 = ["a" => 1];
$arr2 = ["a" => 2];
$arr3 = ["a" => 0, ...$arr1, ...$arr2];
var_dump($arr3); // ["a" => 2]
// Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ
$arr4 = [1, 2, 3];
$arr5 = [4, 5, 6];
$arr6 = [...$arr4, ...$arr5];
var_dump($arr6); // [1, 2, 3, 4, 5, 6]
// Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6],
// Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Π½Π΅ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ»ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π½ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΌΡ, Π½ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠΌΡ ΡΠΈΠΏΡ, Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ TypeError. Π’Π°ΠΊΠΈΠ΅ ΠΊΠ»ΡΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠ»Π°ΡΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Traversable.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠΎ PHP 8.1 ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»Π°ΡΡ:
<?php
$arr1 = [1, 2, 3];
$arr2 = ['a' => 4];
$arr3 = [...$arr1, ...$arr2];
// Fatal error: Uncaught Error: Cannot unpack array with string keys in example.php:5
$arr4 = [1, 2, 3];
$arr5 = [4, 5];
$arr6 = [...$arr4, ...$arr5]; // Π Π°Π±ΠΎΡΠ°Π΅Ρ: [1, 2, 3, 4, 5]
ΠΠ°ΡΡΠΈΠ² Π² PHP β Π³ΠΈΠ±ΠΊΠΈΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
ΠΡΠΈΠΌΠ΅Ρ #23 ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
<?php
// ΠΠΎΠ΄:
$a = array( 'color' => 'ΠΊΡΠ°ΡΠ½ΡΠΉ',
'taste' => 'ΡΠ»Π°Π΄ΠΊΠΈΠΉ',
'shape' => 'ΠΊΡΡΠ³',
'name' => 'ΡΠ±Π»ΠΎΠΊΠΎ',
4 // PHP Π½Π°Π·Π½Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠ»ΡΡ 0
);
$b = array('a', 'b', 'c');
var_dump($a, $b);
// ...ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ:
$a = array();
$a['color'] = 'ΠΊΡΠ°ΡΠ½ΡΠΉ';
$a['taste'] = 'ΡΠ»Π°Π΄ΠΊΠΈΠΉ';
$a['shape'] = 'ΠΊΡΡΠ³';
$a['name'] = 'ΡΠ±Π»ΠΎΠΊΠΎ';
$a[] = 4; // ΠΊΠ»ΡΡΠΎΠΌ ΡΡΠ°Π½Π΅Ρ 0
$b = array();
$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $a ΡΡΠ°Π½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ
// array('color' => 'ΠΊΡΠ°ΡΠ½ΡΠΉ', 'taste' => 'ΡΠ»Π°Π΄ΠΊΠΈΠΉ', 'shape' => 'ΠΊΡΡΠ³',
// 'name' => 'ΡΠ±Π»ΠΎΠΊΠΎ', 0 => 4), Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ $b ΡΡΠ°Π½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ
// array(0 => 'a', 1 => 'b', 2 => 'c'), ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ array('a', 'b', 'c')
var_dump($a, $b);ΠΡΠΈΠΌΠ΅Ρ #24 ΠΡΠ·ΠΎΠ² ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ array()
<?php
// ΠΠ°ΡΡΠΈΠ² ΠΊΠ°ΠΊ ΠΊΠ°ΡΡΠ° (ΡΠ²ΠΎΠΉΡΡΠ²)
$map = array(
'version' => 4,
'OS' => 'Linux',
'lang' => 'english',
'short_tags' => true
);
var_dump($map);
// Π‘ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΊΠ»ΡΡΠΈ,
// ΡΡΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ array(0 => 7, 1 => 8, ...)
$array = array(
7,
8,
0,
156,
-10
);
var_dump($array);
$switching = array(
10, // ΠΊΠ»ΡΡ = 0
5 => 6,
3 => 7,
'a' => 4,
11, // ΠΊΠ»ΡΡ = 6 (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π±ΡΠ»ΠΎ 5)
'8' => 2, // ΠΊΠ»ΡΡ = 8 (ΡΠΈΡΠ»ΠΎ!)
'02' => 77, // ΠΊΠ»ΡΡ = '02'
0 => 12 // Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10 ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 12
);
var_dump($switching);
// ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²
$empty = array();
var_dump($empty);ΠΡΠΈΠΌΠ΅Ρ #25 ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ
<?php
$colors = array('ΠΊΡΠ°ΡΠ½ΡΠΉ', 'Π³ΠΎΠ»ΡΠ±ΠΎΠΉ', 'Π·Π΅Π»ΡΠ½ΡΠΉ', 'ΠΆΡΠ»ΡΡΠΉ');
foreach ($colors as $color) {
echo "ΠΠ°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ $color?\n";
}Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
ΠΠ°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΊΡΠ°ΡΠ½ΡΠΉ? ΠΠ°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ Π³ΠΎΠ»ΡΠ±ΠΎΠΉ? ΠΠ°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ Π·Π΅Π»ΡΠ½ΡΠΉ? ΠΠ°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΆΡΠ»ΡΡΠΉ?
ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ #26 ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠΈΠΊΠ»Π΅
<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color) {
$color = mb_strtoupper($color);
}
unset($color); /* ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΄Π°Π»ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ
Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $color Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° */
print_r($colors);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[0] => ΠΠ ΠΠ‘ΠΠ«Π
[1] => ΠΠΠΠ£ΠΠΠ
[2] => ΠΠΠΠΠΠ«Π
[3] => ΠΠΠΠ’Π«Π
)
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ #27 ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ
<?php
$firstquarter = array(1 => 'ΡΠ½Π²Π°ΡΡ', 'ΡΠ΅Π²ΡΠ°Π»Ρ', 'ΠΌΠ°ΡΡ');
print_r($firstquarter);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[1] => 'ΡΠ½Π²Π°ΡΡ'
[2] => 'ΡΠ΅Π²ΡΠ°Π»Ρ'
[3] => 'ΠΌΠ°ΡΡ'
)
ΠΡΠΈΠΌΠ΅Ρ #28 ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
<?php
// ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ· Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ
$handle = opendir('.');
while (false !== ($file = readdir($handle))) {
$files[] = $file;
}
closedir($handle);
var_dump($files);ΠΠ°ΡΡΠΈΠ²Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ. ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π€ΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈΒ». ΠΠ»Ρ ΠΏΠΎΠ΄ΡΡΡΡΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ count().
ΠΡΠΈΠΌΠ΅Ρ #29 Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΡΡΠΈΠ²Π°
<?php
sort($files);
print_r($files);ΠΠ°ΡΡΠΈΠ²Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ PHP ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΡΠΈΠΌΠ΅Ρ #30 Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
<?php
$fruits = array ( "fruits" => array ( "a" => "Π°ΠΏΠ΅Π»ΡΡΠΈΠ½",
"b" => "Π±Π°Π½Π°Π½",
"c" => "ΡΠ±Π»ΠΎΠΊΠΎ"
),
"numbers" => array ( 1,
2,
3,
4,
5,
6
),
"holes" => array ( "ΠΏΠ΅ΡΠ²Π°Ρ",
5 => "Π²ΡΠΎΡΠ°Ρ",
"ΡΡΠ΅ΡΡΡ"
)
);
var_dump($fruits);
// Π ΡΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
echo $fruits["holes"][5]; // ΠΡΠ²Π΅Π΄Π΅Ρ "Π²ΡΠΎΡΠ°Ρ"
echo $fruits["fruits"]["a"]; // Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ "Π°ΠΏΠ΅Π»ΡΡΠΈΠ½"
unset($fruits["holes"][0]); // ΡΠ΄Π°Π»ΠΈΡ "ΠΏΠ΅ΡΠ²Π°Ρ"
// Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
$juices["apple"]["green"] = "Ρ
ΠΎΡΠΎΡΠΈΠΉ";
var_dump($juices);ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅.
ΠΡΠΈΠΌΠ΅Ρ #31 ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
<?php
$arr1 = array(2, 3);
$arr2 = $arr1;
$arr2[] = 4; // ΠΠ°ΡΡΠΈΠ² $arr2 ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ,
// ΠΠ°ΡΡΠΈΠ² $arr1 Π²ΡΡ Π΅ΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ: array(2, 3)
$arr3 = &$arr1;
$arr3[] = 4; // Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ $arr1 ΠΈ $arr3 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ
var_dump($arr1, $arr2, $arr3);please note that when arrays are copied, the "reference status" of their members is preserved (http://www.php.net/manual/en/language.references.whatdo.php).I think your first, main example is needlessly confusing, very confusing to newbies:
$array = array(
"foo" => "bar",
"bar" => "foo",
);
It should be removed.
For newbies:
An array index can be any string value, even a value that is also a value in the array.
The value of array["foo"] is "bar".
The value of array["bar"] is "foo"
The following expressions are both true:
$array["foo"] == "bar"
$array["bar"] == "foo""If you convert a NULL value to an array, you get an empty array."
This turns out to be a useful property. Say you have a search function that returns an array of values on success or NULL if nothing found.
<?php $values = search(...); ?>
Now you want to merge the array with another array. What do we do if $values is NULL? No problem:
<?php $combined = array_merge((array)$values, $other); ?>
Voila.Beware that if you're using strings as indices in the $_POST array, that periods are transformed into underscores:
<html>
<body>
<?php
printf("POST: "); print_r($_POST); printf("<br/>");
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="Windows3.1" value="Sux">
<input type="submit" value="Click" />
</form>
</body>
</html>
Once you click on the button, the page displays the following:
POST: Array ( [Windows3_1] => Sux )Note that array value buckets are reference-safe, even through serialization.
<?php
$x='initial';
$test=array('A'=>&$x,'B'=>&$x);
$test=unserialize(serialize($test));
$test['A']='changed';
echo $test['B']; // Outputs "changed"
?>
This can be useful in some cases, for example saving RAM within complex structures.