1
0
mirror of https://github.com/php/doc-zh.git synced 2026-03-24 15:12:20 +01:00
Files
archived-doc-zh/reference/array/functions/array-reduce.xml
2022-01-30 21:52:30 +08:00

171 lines
4.6 KiB
XML
Executable File
Raw 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"?>
<!-- $Revision$ -->
<!-- $Author$ -->
<!-- EN-Revision: 31cacb6f262f455c616094cfe6d09bc0d1df2748 Maintainer: daijie Status: ready -->
<refentry xml:id="function.array-reduce" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>array_reduce</refname>
<refpurpose>用回调函数迭代地将数组简化为单一的值</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>mixed</type><methodname>array_reduce</methodname>
<methodparam><type>array</type><parameter>array</parameter></methodparam>
<methodparam><type>callable</type><parameter>callback</parameter></methodparam>
<methodparam choice="opt"><type>mixed</type><parameter>initial</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>array_reduce</function> 将回调函数
<parameter>callback</parameter> 迭代地作用到
<parameter>array</parameter> 数组中的每一个单元中,从而将数组简化为单一的值。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>array</parameter></term>
<listitem>
<para>
输入的 array。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>callback</parameter></term>
<listitem>
<methodsynopsis>
<type>mixed</type><methodname><replaceable>callback</replaceable></methodname>
<methodparam><type>mixed</type><parameter>carry</parameter></methodparam>
<methodparam><type>mixed</type><parameter>item</parameter></methodparam>
</methodsynopsis>
<variablelist>
<varlistentry>
<term><parameter>carry</parameter></term>
<listitem>
<para>
携带上次迭代的返回值;
如果本次迭代是第一次,那么这个值是 <parameter>initial</parameter>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>item</parameter></term>
<listitem>
<para>
携带了本次迭代的值。
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>initial</parameter></term>
<listitem>
<para>
如果指定了可选参数
<parameter>initial</parameter>,该参数将用作处理开始时的初始值,如果数组为空,则会作为最终结果返回。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
返回结果值。
</para>
<para>
如果数组为空,并且没有指定
<parameter>initial</parameter> 参数,<function>array_reduce</function> 返回 &null;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&array.changelog.by-ref;
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>array_reduce</function> 例子</title>
<programlisting role="php">
<![CDATA[
<?php
function sum($carry, $item)
{
$carry += $item;
return $carry;
}
function product($carry, $item)
{
$carry *= $item;
return $carry;
}
$a = array(1, 2, 3, 4, 5);
$x = array();
var_dump(array_reduce($a, "sum")); // int(15)
var_dump(array_reduce($a, "product", 10)); // int(1200), 因为10*1*2*3*4*5
var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>array_filter</function></member>
<member><function>array_map</function></member>
<member><function>array_unique</function></member>
<member><function>array_count_values</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
-->