Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠšΡƒΡ€Ρ "Π―Π·Ρ‹ΠΊ программирования PHP"Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 21

Автор Нина БавСльСва

<?

$del_items = array("langs" => array(

"10"=>"Python", "12"=>"Lisp"),

"other"=>"Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°");

echo count($del_items) . "<br>";

// Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ 2

echo count($del_items,COUNT_RECURSIVE);

// Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ 4

?>



ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сказано ΠΎ массивах Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… лСкциях. Π’ этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами. И Π½Π°Ρ‡Π½Π΅ΠΌ ΠΌΡ‹ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для поиска Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² массивС.


Ѐункция in_array


in_array("искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅","массив",

["ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ"]);


позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, содСрТится Π»ΠΈ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ массивС искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Если Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π·Π°Π΄Π°Π½ ΠΊΠ°ΠΊ true, Ρ‚ΠΎ Π² массивС Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ элСмСнт, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с искомым Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π½ΠΎ ΠΈ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ. Если искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – строка, Ρ‚ΠΎ сравнСниС Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру.


НапримСр, имССтся массив Π½Π΅ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π½Π°ΠΌΠΈ языков программирования. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, содСрТится Π»ΠΈ Π² этом массивС язык PHP. НапишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:


<?php

$langs = array("Lisp","Python","Java",

"PHP","Perl");

if (in_array("PHP",$langs))

echo "Надо Π±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ PHP<br>";

// Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ сообщСниС "Надо Π±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ PHP"

if (in_array("php",$langs))

echo "Надо Π±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ php<br>";

// Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² массивС

// Π΅ΡΡ‚ΡŒ строка "PHP", Π° Π½Π΅ "php"

?>



Π’ качСствС искомого значСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈ массив. ΠŸΡ€Π°Π²Π΄Π°, это свойство Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ начиная с PHP 4.2.0.


НапримСр:


<?php

$langs = array("Lisp","Python",array("PHP","Java"),"Perl");

if (in_array(array("PHP","Java"),$langs))

echo "Надо Π±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ PHP ΠΈ Java<br>";

?>



Ѐункция array_search


Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° функция для поиска значСния Π² массивС. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ in_array Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ array_search Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°, Ссли элСмСнт Π½Π°ΠΉΠ΄Π΅Π½, ΠΈ лоТь – Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. А Π²ΠΎΡ‚ синтаксис Ρƒ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ:


array_search("искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅","массив",

["ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ"]);


Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ строк Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ рСгистру, Π° Ссли ΡƒΠΊΠ°Π·Π°Π½ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Ρ‚ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ ΠΈ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π”ΠΎ PHP 4.2.0, Ссли искомоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, эта функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈΠ»ΠΈ пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7.4. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΏΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ массив языков программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта являСтся Π½ΠΎΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎ счСту Π±Ρ‹Π» ΠΈΠ·ΡƒΡ‡Π΅Π½ этот язык.


<?php

$langs = array("Lisp","Python","Java",

"PHP","Perl");

if (!array_search("PHP",$langs))

echo "Надо Π±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ PHP<br>";

else {

$k = array_search("PHP",$langs);

echo "PHP я ΠΈΠ·ΡƒΡ‡ΠΈΠ»Π° $k – ΠΌ";

}

?>



Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ строчку:


PHP я ΠΈΠ·ΡƒΡ‡ΠΈΠ»Π° 3 – ΠΌ


ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ эта функция Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°, Ρ‡Π΅ΠΌ in_array, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ искомый элСмСнт Π² массивС Π΅ΡΡ‚ΡŒ, Π½ΠΎ ΠΈ ΡƒΠ·Π½Π°Π΅ΠΌ, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² массивС ΠΎΠ½ находится. А Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли искомых элСмСнтов Π² массивС нСсколько? Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС функция array_search() Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ всСх элСмСнтов, Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ array_keys().


Ѐункция array_keys


Ѐункция array_keys() Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ всС ΠΊΠ»ΡŽΡ‡ΠΈ массива. Но Ρƒ Π½Π΅Π΅ имССтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список ΠΊΠ»ΡŽΡ‡Π΅ΠΉ элСмСнтов с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Бинтаксис этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ²:


array_keys ("массив"

[,"Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для поиска"])


Ѐункция array_keys() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊ строковыС, Ρ‚Π°ΠΊ ΠΈ числовыС ΠΊΠ»ΡŽΡ‡ΠΈ массива, организуя всС значСния Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива с числовыми индСксами.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7.5. ΠœΡ‹ записали массив языков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ. Бписок Π±Ρ‹Π» Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки Π±Ρ‹Π»ΠΈ записаны нСсколько Ρ€Π°Π·. Π£ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… языков – Lisp. Π”Π°Π²Π°ΠΉΡ‚Π΅ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ:


<?php

$langs =

array("Lisp","Python","Java","PHP",

"Perl","Lisp");

$lisp_keys = array_keys($langs,"Lisp");

echo "Lisp Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² массив ".

count($lisp_keys) ." Ρ€Π°Π·Π°:<br>";

foreach ($lisp_keys as $val){

echo "ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ $val <br>";

}

?>



Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:


Lisp Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² массив 2 Ρ€Π°Π·Π°:

ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 0

ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 5



Ѐункция array_keys(), ΠΊΠ°ΠΊ ΠΈ Π΄Π²Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅, зависит ΠΎΡ‚ рСгистра, Ρ‚.Π΅. элСмСнтов LISP Π² массивС ΠΎΠ½Π° Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚. array_keys() появилась Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² PHP4. Π’ PHP3 для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.


Если Π΅ΡΡ‚ΡŒ функция для получСния всСх ΠΊΠ»ΡŽΡ‡Π΅ΠΉ массива, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт ΠΈ функция для получСния всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½Π° сущСствуСт. Π­Ρ‚ΠΎ функция array_values(массив). ВсС значСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ массива Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½ΠΎΠ²Ρ‹ΠΉ массив, проиндСксированный Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, Ρ‚.Π΅. всС ΠΊΠ»ΡŽΡ‡ΠΈ массива Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния. Но вСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ.


Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ выяснили, Ρ‡Ρ‚ΠΎ язык Lisp случайно упомянут Π² нашСм массивС Π΄Π²Π°ΠΆΠ΄Ρ‹. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ язык Π΄Π²Π°ΠΆΠ΄Ρ‹ нСльзя (Β«ΡƒΡ‡ΠΈΠ», Π½ΠΎ Π·Π°Π±Ρ‹Π»Β» Π½Π΅ считаСтся), Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ языков. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это довольно просто с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ array_unique().


Ѐункция array_unique


Ѐункция array_unique(массив) удаляСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ значСния ΠΈΠ· массива ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вмСсто Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Какой Ρƒ Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡? Как ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… элСмСнтов выбираСтся Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ сохранСн Π² Π½ΠΎΠ²ΠΎΠΌ массивС? ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. ВсС элСмСнты массива ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² строки ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚.


ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ языков Π² спискС ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ….


<?php

$langs =

array("Lisp","Java","Python","Java",

"PHP","Perl","Lisp");

print_r(array_unique($langs));

?>



ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:


Array ( [0] => Lisp [1] => Java [2]

=> Python [4] => PHP [5] => Perl )



Π”Π°Π»Π΅Π΅ рассмотрим Π·Π°Π΄Π°Ρ‡Ρƒ сортировки массива.


Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массивов


ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ сортировки Π΄Π°Π½Π½Ρ‹Ρ…, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² Π²ΠΈΠ΄Π΅ массивов, ΠΎΡ‡Π΅Π½ΡŒ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ самых Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Если Π² языкС Π‘ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ дСсятки строк ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ Π² PHP это дСлаСтся ΠΎΠ΄Π½ΠΎΠΉ простой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.


Ѐункция sort


Ѐункция sort ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис


sort (массив [, Ρ„Π»Π°Π³ΠΈ])


ΠΈ сортируСт массив, Ρ‚.Π΅. упорядочиваСт Π΅Π³ΠΎ значСния ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ. Π­Ρ‚Π° функция удаляСт всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠ΅ Π² массивС ΠΊΠ»ΡŽΡ‡ΠΈ, замСняя ΠΈΡ… числовыми индСксами, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π½ΠΎΠ²ΠΎΠΌΡƒ порядку элСмСнтов. Π’ случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, ΠΈΠ½Π°Ρ‡Π΅ – false.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 7.6. ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° массива: Ρ†Π΅Π½Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² – ΠΈΡ… названия ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, названия Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² – ΠΈΡ… Ρ†Π΅Π½Ρ‹. Упорядочим эти массивы ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ:


$items = array(10 => "Ρ…Π»Π΅Π±", 20 => "ΠΌΠΎΠ»ΠΎΠΊΠΎ",

30 => "Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄");

sort($items);

// строки ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ

// порядкС, ΠΊΠ»ΡŽΡ‡ΠΈ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ

print_r($items);

$rev_items = array("Ρ…Π»Π΅Π±" => 10,

"Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄" => 30, "ΠΌΠΎΠ»ΠΎΠΊΠΎ" => 20);

sort($rev_items);

// числа ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ,

// ΠΊΠ»ΡŽΡ‡ΠΈ Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ

print_r($rev_items);

?>



ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ:


Array ( [0] => Π±ΡƒΡ‚Π΅Ρ€Π±Ρ€ΠΎΠ΄ [1] =>

ΠΌΠΎΠ»ΠΎΠΊΠΎ [2] => Ρ…Π»Π΅Π± )

Array ( [0] => 10 [1] => 20 [2] => 30 )



Π’ качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„Π»Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… констант:


- SORT_REGULAR – ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ;


- SORT_NUMERIC – ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΊΠ°ΠΊ числа;


- SORT_STRING – ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΊΠ°ΠΊ строки.


Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ asort, rsort, arsort


Если трСбуСтся ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ индСксы элСмСнтов массива послС сортировки, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ asort (массив [, Ρ„Π»Π°Π³ΠΈ]). Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Ρ‚.Π΅. ΠΎΡ‚ наибольшСго значСния ΠΊ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ rsort (массив [, Ρ„Π»Π°Π³ΠΈ]). А Ссли ΠΏΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ‚ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ arsort(массив [, Ρ„Π»Π°Π³ΠΈ]). Как Π²Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ синтаксис Ρƒ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sort. БоотвСтствСнно ΠΈ значСния Ρ„Π»Π°Π³ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρƒ sort: SORT_REGULAR, SORT_NUMERIC, SORT_STRING. ΠšΡΡ‚Π°Ρ‚ΠΈ говоря, Ρ„Π»Π°Π³ SORT_NUMERIC появился Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² PHP4.