PHP Codebook 六

发布于 2024-10-26 12:14:34 字数 3256 浏览 4 评论 0

6.4 使用命名参数

问题

希望按名为函数指定参数,而不是通过函数调用时的位置来指定。

实现

<?php
function image1($params)
{
    if (!isset($params['src'])) {
        $image['src'] = 'cow.png';
    }

    if (!isset($params['alt'])) {
        $image['alt'] = 'Milk Factory';
    }

    if (!isset($params['height'])) {
        $image['height'] = '100';
    }

    if (!isset($params['width'])) {
        $image['width'] = '50';
    }

    return '<img src="' . $image['src'] . '" alt="' . $image['alt'] . '" width="' . $image['width'] . '" height="' . $image['height'] . '">';
}

function image2($params)
{
    $defaults = [
        'src' => 'cow.png',
        'alt' => 'milk factory',
        'width' => 100,
        'height' => 50,
    ];

    $params = array_merge($defaults, $params);
    return '<img src="' . $image['src'] . '" alt="' . $image['alt'] . '" width="' . $image['width'] . '" height="' . $image['height'] . '">';
}
?>

6.6 创建参数个数可变的函数

问题

希望定义一个参数个数可变的函数

实现

<?php

function mean($numbers)
{
    $sum = 0;

    $size = count($numbers);

    for ($i = 0; $i < $size; $i++) {
        $sum += $numbers[$i];
    }

    $average = $sum / $size;

    return $average;
}

echo mean([96, 93, 98, 98]) . "\n";

function mean1()
{
    $sum = 0;

    $size = func_num_args();

    for ($i = 0; $i < $size; $i++) {
        $sum += func_get_arg($i);
    }

    $average = $sum / $size;

    return $average;

}

echo mean1(96, 93, 98, 98) . "\n";

function mean2()
{
    $sum = 0;

    $size = func_num_args();

    foreach (func_get_args() as $arg) {
        $sum += $arg;
    }
    $average = $sum / $size;

    return $average;
}

echo mean2(96, 93, 98, 98) . "\n";

6.7 按引用返回值

问题

希望按引用返回一个值,而不是按值返回。这样就无需为变量建立一个重复的副本。

实现

<?php

function &array_find_value($needle, &$haystack)
{
    foreach ($haystack as $key => $value) {
        if ($needle == $value) {
            return $haystack[$key];
        }
    }
}

$names = ['Ann Eason', 'Luis Edware', 'Ivan Tomic', 'RouniFul'];

$prince =& array_find_value('Ann Eason', $names);
$prince = "梁非凡";
print_r($names);

6.8 返回多个值

问题

希望从函数返回多个值。

实现

<?php

function array_stats($values)
{
    $min = min($values);
    $max = max($values);
    $mean = array_sum($values) / count($values);

    return [$min, $max, $mean];
}

$values = range(1, 100);
list($min, $max, $mean) = array_stats($values);

echo sprintf("min is %d,max is %d,mean is %d", $min, $max, $mean);

6.10 返回失败

问题

希望从函数中指示失败

实现

<?php

function lookup($name)
{
    if (empty($name)) {
        return false;
    }
}

$name = false;
if (false !== lookup($name)) {

}

6.11 调用可变函数

问题

希望根据一个变量的值来调用不同的函数

实现

<?php

function get_file($fileName)
{
    return file_get_contents($fileName);
}

$function = 'get_file';
$fileName = 'graphic.png';

call_user_func($function, $fileName);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

上一篇:

下一篇:

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

面如桃花

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

linfzu01

文章 0 评论 0

可遇━不可求

文章 0 评论 0

枕梦

文章 0 评论 0

qq_3LFa8Q

文章 0 评论 0

JP

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文