博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP Cookbook读书笔记 – 第06章函数
阅读量:5230 次
发布时间:2019-06-14

本文共 2535 字,大约阅读时间需要 8 分钟。

5732225564_2e039b79c3.jpg函数(有些资料会将此翻译成过程,所谓的面向过程开发就是以函数为基础的开发)在面向对象开发(简称OO--Object-Oriented Method)时代之前,是PHP中最重要的一个部分,是代码复用唯一的方法。在OO出现之后(虽然早期PHP版本就已经有OO的身影,但真正引入面向对象主要特性是在PHP5版本之后)两种方法常常会并存于一个项目中,这点和很多面向对象语言(JAVA或ASP.NET等)不太一样。其原因我个人认为原因有二:其一是由于PHP在运行函数时速度要优于面向对象(),而面向对象又有其良好扩展性及实用性的优势;其二是很多项目起始于面向过程的时代,在版本更新时并没有完全去除能够显著提高速度而不影响可读性的部分面向过程的代码。

设置函数的默认值:

function wrap_html_tag($string, $tag = 'b') {    return "<$tag>$string
";}

传递一个变量引用:

function wrap_html_tag(&$string, $tag = 'b') {    $string = "<$tag>$string
";}

指定多个参数默认值的另一种方法:

function pc_assign_defaults($array, $defaults) {    $a = array();    foreach ($defaults as $d => $v) {        $a[$d] = isset($array[$d]) ? $array[$d] : $v;    }    return $a;}function image($img) {    $defaults = array('src'    => 'cow.png',                      'alt'    => 'milk factory',                      'height' => 100,                      'width'  => 50                     );    $img = pc_assign_defaults($img, $defaults);    ...}

传递可变个数的参数:

//$numbers是可变个数function mean($numbers) {    // 初始化以消除警告    $sum = 0;    // 统计参数的个数    $size = count($numbers);    // 迭代数组中的元素并计算总和    for ($i = 0; $i < $size; $i++) {        $sum += $numbers[$i];    }    // 计算平均值    $average = $sum / $size;    // 返回平均值    return $average;}$mean = mean(array(96, 93, 97));

返回变量的引用:

可以理解为return后面的值与调用函数的等号左边的变量指向的是同一个东东(内存地址)

function &pc_array_find_value($needle, &$haystack) {    foreach ($haystack as $key => $value) {        if ($needle == $value) {            return $haystack[$key];        }    }}$minnesota = array('Bob Dylan', 'F. Scott Fitzgerald', 'Prince', 'Charles Schultz');$prince =& pc_array_find_value('Prince', $minnesota);$prince = 'O(+>';print_r($minnesota);Array(    [0] => Bob Dylan    [1] => F. Scott Fitzgerald    [2] => O(+>    [3] => Charles Schultz)

返回多个值:

function averages($stats) {    ...    return array($median, $mean, $mode);}list($median, $mean, $mode) = averages($stats);

调用可变函数

(根据参数调用不同的函数,):

function get_file($filename) { return file_get_contents($filename); }function put_file($filename, $data) { return file_put_contents($filename, $data); }if ($action == 'get') {    $function = 'get_file';    $args = array('graphic.png');} elseif ($action == 'put') {    $function = 'put_file';    $args = array('graphic.png', $graphic);}// calls get_file('graphic.png')// calls put_file('graphic.png', $graphic)call_user_func_array($function, $args);

动态函数():

$add = create_function('$i,$j', 'return $i+$j;');$add(1, 1); // returns 2

转载于:https://www.cnblogs.com/Excellent/archive/2011/12/15/2288720.html

你可能感兴趣的文章
MongoDB的数据库、集合的基本操作
查看>>
ajax向后台传递数组
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
软件测试-----Graph Coverage作业
查看>>
django ORM创建数据库方法
查看>>
创建Oracle synonym 详解
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
linux查看端口占用
查看>>
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>