1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
Mikhail Alferov 01fd1e80af Update reference/array/functions to En (#1068)
* Update book.xml to en

* Update array-combine.xml to en

* Update array-diff.xml to en

* Update array-fill.xml to en

* Update array-is-list.xml to en

* Update array-map.xml to en

* Update array-merge.xml to en

* Update array-multisort.xml to en

* Update array-pad.xml to en

* Update array-search.xml to en

* Update array-splice.xml to en

* Update array-udiff-uassoc.xml to en

* Update array.xml to en

* Update count.xml to en

* Update current.xml to en

* Update each.xml to en

* Update in-array.xml to en

* Update list.xml to en

* Update next.xml to en

* Update prev.xml to en

* Update usort.xml to en
2025-05-09 09:05:53 +03:00

262 lines
7.9 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: 2e60c5134e7a847c99f81eb3f7ecee1f5efeeace Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.count" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>count</refname>
<refpurpose>
Подсчитывает количество элементов в массиве или в объекте <interfacename>Countable</interfacename>
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>count</methodname>
<methodparam><type class="union"><type>Countable</type><type>array</type></type><parameter>value</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer><constant>COUNT_NORMAL</constant></initializer></methodparam>
</methodsynopsis>
<para>
Функция подсчитывает количество элементов в массиве, если в функцию передали массив.
Функция возвращает значение, которое вернул метод <methodname>Countable::count</methodname>,
если в функцию передали объект, который реализует интерфейс <interfacename>Countable</interfacename>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
Массив или объект, который реализует интерфейс <interfacename>Countable</interfacename>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mode</parameter></term>
<listitem>
<para>
Функция <function>count</function> будет рекурсивно подсчитывать элементы массива,
если для необязательного параметра <parameter>mode</parameter> установили значение
<constant>COUNT_RECURSIVE</constant> (или 1).
Это, в частности, полезно для подсчёта элементов многомерных массивов.
</para>
<caution>
<para>
Функция <function>count</function> умеет обнаруживать рекурсию, чтобы избежать
бесконечного цикла, но для каждого такого случая будет выдавать ошибку уровня
<constant>E_WARNING</constant> (если массив содержит себя
больше одного раза), и возвращать значение выше, чем ожидалось.
</para>
</caution>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает количество элементов в параметре <parameter>value</parameter>.
До PHP 8.0.0, если параметр не был ни массивом (&array;),
ни объектом (&object;), который реализует интерфейс <interfacename>Countable</interfacename>,
возвращалось значение <literal>1</literal>,
если значение параметра <parameter>value</parameter> не было равно &null;,
тогда возвращалось значение <literal>0</literal>.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Теперь функция <function>count</function> выбрасывает
исключение <classname>TypeError</classname>, если в параметр
<parameter>value</parameter> передали недопустимый исчисляемый тип.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Теперь функция <function>count</function> будет выдавать предупреждение
о недопустимых исчисляемых типах, которые передали в параметр <parameter>value</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example xml:id="count.example.basic">
<title>Пример подсчёта элементов массива функцией <function>count</function></title>
<programlisting role="php">
<![CDATA[
<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
var_dump(count($a));
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
int(3)
int(3)
]]>
</screen>
</example>
</para>
<para>
<example xml:id="count.example.badexample">
<title>
Пример вызова функции <function>count</function> на значении с неисчисляемым типом,
которое не принадлежит объединению типов Countable|array (плохой пример — не делайте так)
</title>
<programlisting role="php" annotations="non-interactive">
<![CDATA[
<?php
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));
var_dump(count(null));
var_dump(count(false));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
int(3)
Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12
]]>
</screen>
</example>
</para>
<para>
<example xml:id="count.example.recursive">
<title>Пример рекурсивного использования функции <function>count</function></title>
<programlisting role="php">
<![CDATA[
<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));
// рекурсивный подсчёт
var_dump(count($food, COUNT_RECURSIVE));
// обычный подсчёт
var_dump(count($food));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
int(8)
int(2)
]]>
</screen>
</example>
</para>
<para>
<example xml:id="count.example.countable">
<title>Объект, который реализует интерфейс <interfacename>Countable</interfacename></title>
<programlisting role="php">
<![CDATA[
<?php
class CountOfMethods implements Countable
{
private function someMethod() {}
public function count(): int
{
return count(get_class_methods($this));
}
}
$obj = new CountOfMethods();
var_dump(count($obj));
?>
]]>
</programlisting>
&example.outputs;
<screen role="php">
<![CDATA[
int(2)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>is_array</function></member>
<member><function>isset</function></member>
<member><function>empty</function></member>
<member><function>strlen</function></member>
<member><function>is_countable</function></member>
<member><link linkend="language.types.array">Массивы</link></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
-->