目录:【PHP函数】、【PHP数组】

一、PHP常用函数(和JS一样)
函数的四要素:
①返回类型
②函数名
③参数类型
④函数体
因为PHP是弱类型语言,所以可以不用写返回类型,但是其他三个要素都是必须要写的。


1、最简单的函数写法

  1. function show()
  2. {
  3. echo "hello";
  4. }
  5. show();

2、有返回值的函数
就是在函数体里面要加return。
return:返回。

  1. function show()
  2. {
  3. return "hello";
  4. }
  5. echo show();

3、有参数的函数
需要一个参数,因为是弱类型语言,不需要给数据类型,直接写形参就可以。

  1. function show($a)
  2. {
  3. echo $a;
  4. }
  5. show("你好");

所以在输出调用的时候需要给一个实参。


4、可变参数的函数(PHP中)
也就是说函数在调用的时候,参数是可以变化的。可以不给参数,可以给一个两个三个都是可以的。如果是在其他语言中,这种可变参数是需要使用面向对象的知识,而在PHP中是不需要的。
可变参数如何定义例:
一个传的参数做一个累加的函数,传过来几个参数做一个累加求和,之后再输出最终结果。
func_get_args:在函数体里面,如何获取用户给的参数。
func:函数的缩写。
get:获取。
args:参数。
如果调用这个方法,会调回一个数组,就是所有用户给的参数。

  1. function sum()
  2. {
  3. $attr = func_get_args();
  4. var_dump($attr);
  5. }
  6. sum()

①如果sum没有传参数的话结果是:
(数组里面没有元素,是的。)

array:数组
如果sum里面传值过去的结果是:
sum(1,2,3,4);

索引为0,1,2,3. 数值就变成了四个了。所以说这个方法可以动态的获取用户传的参数的个数,然后整体的放到一个数组里面。既然我们可以获取用户的参数,那么接下来我们就可以进行操作了:

可以使用for循环用来遍历到每一个参数,做一个累加:

  1. function sum()
  2. {
  3. $attr = func_get_args();
  4. for($i=;$i<count($attr))
  5. }
  6. sum(,,,)

PS:如何获取数组长度

  1. count($attr)
  2. function sum()
  3. {
  4. $attr = func_get_args();
  5. for($i=;$i<count($attr))
  6. }
  7. sum()

②获取参数的数量
func_num_args();然后交给一个变量。

  1. function sum()
  2. {
  3. $attr = func_get_args();
  4. $n = func_num_args();
  5.  
  6. $sum = ;
  7. for($i=;$i<$n;$i++)
  8. {
  9. $sum += $attr[$i];
  10. }
  11. echo $sum;
  12. }
  13. sum();

这是一个完整版的PHP可变参数函数,没有规定参数具体是多少,用户在调用的时候可以随意给参数。
+=:自身加上后边的值。


二、PHP数组
数组是专业用来存储数据的结构。
数组的特点:
①数组里面可以存储任意类型数据
②数组并不是在内存里面开辟一块连续的区域存储。

1、数组定义方式
①PHP数组简单的定义方式:
$attr = array();
var_dump($attr);
变量(未来存的是数组)=数组(参数)
②[]方式定义
$attr = array(1,2);
$attr1 = [1,2,3,4];
var_dump($attr1);

PS:因为我们在使用时是用的DW,而不是PHP专业开发工具,所以这个时候写完代码会显示出错,但输出是不错误的,所以可以无视掉。

如果想要索取这个数组中赋值的4如何取?
$attr1 = [1,2,3,4];
echo $attr1[3];

③赋值定义
$attr = array(1,2);
$attr2[0] = "你好";
$attr2[1] = "世界";
var_dump($attr2);

$attr2[0] = "你好";:给索引0的位置赋值一个你好。


2、索引数组
$attr = array(1,2,3);
var_dump($attr);
因为我们在输出或者取值的时候,我们可以看到前面的索引号:0、1、2等。


3、关联数组
和其他语言中的集合比较像,前面的索引号位置变成字符串,也就是相当于给后面的值起了一个名字。
$attr1 = array("one"=>1,"two"=>2);
var_dump($attr1);

而关联数组和索引数组区别就在于K的区别。也就是值前面的“名字”不同。
索引号的是自动排的,而关联数组的是我们认为取得。
取值:echo $attr1[one];


4、遍历数组
①for循环遍历数组(关联数组无法使用)

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>);
  3. for($i=;$i<count($attr);$i++)
  4. {
  5. echo $attr[$i]."<br>";
  6. }

点.:代表字符串的拼接。

②foreach遍历
索引和关联是都可以便利的
(1)

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. foreach($attr1 as $v)
  4. {
  5. echo $v."<br>"
  6. }

($attr1 as $v):第一次执行的时候是把数组里的第一个元素扔给变量$v,每一次都是这样。

(2)取值取值和K

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. foreach($attr1 as $k=>$v)
  4. {
  5. echo "{$k}--{$v}<br>";
  6. }

{$k}--{$v}<br>:在字符串里解析变量。解析完之后其他的不变,只有{$k}和{$v}变化。
--:起到分割效果,也可以加==也可以不加。
③、each()和list()配合遍历数组
each方法可以返回$attr1数组里的某一个元素的K和值。

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. var_dump(each($attr1));

var_dump(each($attr1)); 取数组里面当前指针指向的元素。
var_dump(each($attr1)[1]);如果取索引1,可以取到value值。
var_dump(each($attr1)["key"]);如果取到Key,也可以取到索引值。
也就是说:
它返回的是当前这个数组$attr1里面的第一个元素,将第一个元素的索引和值全部取出来,之后新建了一个数组,存在这个数组里面,这个数组为了使用方便,所以里面既有索引,也有关联。也就是说,这个数组里面的数据是有容余的,都可以取到值。

④list()方法 特殊
其他的方法都是写在等号的右边。list是唯一一个写在等号右边的。
(1)将右侧数组里的元素赋值给参数列表里的变量。

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. list($a,$b,$c)=$attr;
  4. echo $a

把右侧attr里每个元素取出交给左边的参数列表里的每个参数。它是用来给这个变量赋值,而所赋之值是数组里元素的值。
所以,如果输出$a,就是1。
(2)如何配合遍历数组。

  1. while(list($k,$v)= each($attr1));
  2. {
  3. echo "{$k}--{$v}<br>";
  4. }

不常用。记住即可。


(1)使用指针的方式来遍历数组。

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. echo current($attr1);

取指针指向的当前元素的value值。只管取值,不动指针。
(2)key方法
eco key($attr1);取指针指向的当前元素的key。只管取值,不动指针。
(3)next()调整指针的。
(4)将指针向下调一个。

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. next($attr1);
  4. next($attr1);
  5. echo key($attr);

(5)将指针向上调一个。

  1. $attr = array(,,);
  2. $attr1 = array("one"=>,"two"=>,""=>);
  3. next($attr1);
  4. prev($attr1);
  5. echo key($attr);

next:下一页。
prev:上一页。
(6)end 将指针调向最后一个元素。
(7)reset: 将指针复位。

PHP【函数】的更多相关文章

  1. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  7. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  8. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  9. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

  10. Python高手之路【四】python函数装饰器

    def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...

随机推荐

  1. 对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵

    2016-01-27 21:03 524人阅读 评论(0) 收藏 举报 分类: 理论/笔记(20) 版权声明:本文为博主原创文章,转载请注明出处,谢谢! 题目:对称矩阵.Hermite矩阵.正交矩阵. ...

  2. Bootstrap使用后笔记

      Bootstrap Modal 垂直居中 在 bootstrap.js中修改如下代码: Modal.prototype.adjustDialog = function () { var modal ...

  3. python select 实现

    python的select()方法直接调用操作系统的IO接口 它监控sockets,openfiile,pipes (所有带fileno()的方法的文件句柄) 什么时候变成 readable writ ...

  4. 【USACO 3.1】Contact(01子串按出现次数排序)

    题意:给你一个01字符串,将长度为a到b之间(包含a.b)的子串按照出现次数排序.注意输入输出格式 题解:01子串对应一个二进制,为了区别11和011这样的不同子串,我们把长度也记录下来,官方题解是在 ...

  5. 更新/替换系统 hosts,轻松访问国外站点

    更新 hosts 下面介绍的操作均可能覆盖现有 hosts ,进行操作前请先确认是否需要备份. 推荐使用本项目的 Host Tools 来自动化 备份/配置 工作. 若更新 hosts 未立即生效,请 ...

  6. 解决: Sudamod/CM-13.0 源代码出现 Fatal: duplicate project .....问题

    初始化代码库的时候出现如下错误: fatal: manifest ‘default.xml‘ not available fatal: duplicate project CyanogenMod/an ...

  7. web框架 之 Tornado

    初识 Tornado : tornado web server 是使用python编写出来的一个轻量级.高可伸缩性和非阻塞IO的Web服务器软件,其特点是采用epoll非阻塞IO,相应快速,可处理数千 ...

  8. bzoj 1031 [JSOI2007]字符加密Cipher

    求出来后缀数组的rank就行了,不会可以去看集训队论文. #include<iostream> #include<cstdio> #include<cstring> ...

  9. sql语句的单双引号问题

    $current_account_url='<a class="mini-button" iconcls="icon-edit" onclick=&quo ...

  10. 没有为 COM 互操作注册程序集 请使用 regasm.exe /tlb 注册该程序集——解决办法

    错误现象: 错误 6 没有为 COM 互操作注册程序集“DevExpress.Utils.v13.1, Version=13.1.7.0, Culture=neutral, PublicKeyToke ...