1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 15:52:13 +01:00
Files

218 lines
5.6 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: f781803449007bb0e3a96c693e0eee067f7eb466 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.natsort" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>natsort</refname>
<refpurpose>Сортирует массив алгоритмом «естественного упорядочивания»</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>true</type><methodname>natsort</methodname>
<methodparam><type>array</type><parameter role="reference">array</parameter></methodparam>
</methodsynopsis>
<para>
Функция реализует алгоритм сортировки, который упорядочивает
буквенно-цифровые строки так, как это сделал бы человек. При этом
функция сохраняет связи между ключами и значениями. Такой алгоритм называется «естественное упорядочивание» (англ. natural ordering).
Приведённый пример показывает различия между этим алгоритмом и стандартными компьютерными алгоритмами сортировки строк,
по которым работает функция <function>sort</function>.
</para>
&note.sort-unstable;
&note.reset-index;
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>array</parameter></term>
<listitem>
<para>
Входной массив.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.true.always;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&return.type.true;
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Простой пример сортировки массива функцией <function>natsort</function></title>
<programlisting role="php">
<![CDATA[
<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
echo "Стандартная сортировка\n";
print_r($array1);
natsort($array2);
echo "\nСортировка алгоритмом natural order\n";
print_r($array2);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Стандартная сортировка
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
Сортировка алгоритмом natural order
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
]]>
</screen>
<para>
Подробнее об алгоритме рассказывает страница «Сравнение строк в естественном порядке» Мартина Пула (Martin Pool)
<link xlink:href="&url.strnatcmp;">Natural Order String Comparison</link>.
</para>
</example>
<example>
<title>Примеры показывают ошибки, которые возникают при сортировке массива функцией <function>natsort</function></title>
<programlisting role="php">
<![CDATA[
<?php
echo "Сортировка отрицательных числовых строк\n";
$negative = array('-5', '3', '-2', '0', '-1000', '9', '1');
print_r($negative);
natsort($negative);
print_r($negative);
echo "Сортировка числовых строк, дополненных ведущими нулями\n";
$zeros = array('09', '8', '10', '009', '011', '0');
print_r($zeros);
natsort($zeros);
print_r($zeros);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Сортировка отрицательных числовых строк
Array
(
[0] => -5
[1] => 3
[2] => -2
[3] => 0
[4] => -1000
[5] => 9
[6] => 1
)
Array
(
[2] => -2
[0] => -5
[4] => -1000
[3] => 0
[6] => 1
[1] => 3
[5] => 9
)
Сортировка числовых строк, дополненных ведущими нулями
Array
(
[0] => 09
[1] => 8
[2] => 10
[3] => 009
[4] => 011
[5] => 0
)
Array
(
[5] => 0
[1] => 8
[3] => 009
[0] => 09
[2] => 10
[4] => 011
)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>natcasesort</function></member>
<member>&seealso.array.sorting;</member>
<member><function>strnatcmp</function></member>
<member><function>strnatcasecmp</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->