1
0
mirror of https://github.com/php/doc-uk.git synced 2026-03-24 23:22:14 +01:00
Files
2026-01-11 19:08:51 +00:00

251 lines
7.2 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: mproshchuk Status: ready -->
<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>
Якщо використовується для масиву, підраховує кількість його елементів. Якщо
використовується для об'єкта, який реалізує інтерфейс
<interfacename>Countable</interfacename>, то повертає результат методу
<methodname>Countable::count</methodname>.
</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>
Якщо необов’язковий параметр <parameter>mode</parameter> встановлений у
<constant>COUNT_RECURSIVE</constant> (або 1), функція
<function>count</function> рахуватиме кількість елементів масиву
рекурсивно. Це особливо корисно для підрахунку всіх елементів
багатовимірних масивів.
</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'));
// рекурсивний count
var_dump(count($food, COUNT_RECURSIVE);
// простий count
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
-->