PHP特定函数foreach遍历一二维数组
foreach有两种用法:
一、
foreach(arr_name as $value)
{
statement;
}
解析:arr_name是要遍历的数组名。每次循环,arr_name数组当前元素的值都被赋给$value,而且数组内部下标也要下移一个,也就是说下次循环得到的将是下一个元素
二、
foreach(arr_name as $key => $value)
{
statement;
}
解析:与第一个的不同是,这个除了吧当前元素的值赋给$value外,每次循环当前元素的键值也会被赋给$key , 键值可能是下标或字符串。如row[0]=1中的"0”,row[id]="001"中的"id”.其中0与id都是键值
先来看第一个语句,这个语句比较简单,array_expression指的是一个数组表达式,as $val语句将顺序取得该数组的值并保存到$val变量中,此种方法只能取得数组内的值,而不能取得数组的下标索引值。例如:
代码如下 | 复制代码 |
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $val) { echo $val."<br />"; } 执行结果: val1 val2 val3 |
再来看看第二种格式,第二种格式除了能像第一种格式一样得到数组内元素的值外,还能得到元素的索引值,并保存到$key变量中,如果数组的索引值未经过人工设定,则返回系统默认的设定值。
先看一个简单的一维数组:
代码如下 | 复制代码 |
$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3"); foreach($myArray as $key=>$val) { echo $key."=>".$val."<br />"; } 执行结果: 1=>val1 2=>val2 3=>val3 |
接下来我们再来看一个复杂一点的二维数组遍历,程序如下:
代码如下 | 复制代码 |
$myArray=array( "1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"), "2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"), "3"=>array("31"=>"val31","32"=>"val32","33"=>"val33") ); echo "<ul>"; foreach($myArray as $key=>$val) { echo "<li>".$key."</li>"; //判断$val的值是否是一个数组,如果是,则进入下层遍历 if (is_array($val)) { echo "<ul>"; foreach($val as $key=>$val) { echo "<li>".$key."=>".$val."</li>"; } echo "</ul>"; } } echo "</ul>"; |
执行结果:
<ul> 和 <li>是 标签,作用是显示个实心小圆点和空心小圆点。 由于上面的是一个二维数组,在第一次遍历后所得到的$val值将是一个数组,所以我在遍历中加了一个判断,以便进行二层数组遍历。
再通过一个实例解惑:
代码如下 | 复制代码 |
$a = array("1"=>"语文","2"=>"数学","3"=>"英语"); $b = array("1"=>"95","2"=>"99","3"=>"92"); foreach($a as $key=>$value){ echo $value; echo $b[$key]."<br>"; } 执行结果: 语文95 数学99 英语92 |
问题是为什么输出数组$b中的值要用$b[$key]而不是$b[$value]? why?
代码如下 | 复制代码 |
$a = array("1"=>"语文","2"=>"数学","3"=>"英语"); 上面这个和下面这个是完全一样的 $a[1]="语文"; $a[2]="数学"; $a[3]="英语"; 我们输出上面的数组元素是怎么输出的呢? 肯定是 echo $a[1]; echo $a[2]; echo $a[3]; |
对不对?简单说foreach 它的格式是这样的
foreach(数组名 as 下标=>值)
下标也就是上面的$a[1],这里的1就是数组的下标! 到这你应该明白了,为什么是$a[$key]这样输出。
好了到这里关于php foreach就介绍完了,foreach只能遍历一二维数组了,如果是三维数组我们需要进行递归操作了。
PHP中数组函数有很多,我们要对数据进行合并与追加都只要使用相关的函数就可以完成了,下面给各位整理几个例子。PHP合并数组我们可以使用array_merge()函数,array_merge()函数返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。其形式为:
array array_merge (array array1 array2…,arrayN)
下面是一个PHP合并数组的例子:
代码如下 | 复制代码 |
<?php |
用PHP追加数组,使用array_merge_recursive(),将两个数组合并在一起,注意,与array_merge()函数是不一样的,array_merge()的两个数组有重复项时会覆盖掉,而array_merge_recursive()则不会。array_merge_recursive()语法:
array array_merge_recursive(array array1,array array2[…,array arrayN])
下面是一个PHP追加数组的例子:
代码如下 | 复制代码 |
<?php |
现在apple 指向一个数组,由两个颜色值组成的索引数组,还有一种比较怪的做法就是合并数组
array_splice()语法格式为:
array array_splice ( array array , int offset[,length[,array replacement]])
例子
代码如下 | 复制代码 |
<?php |
我们还可以使用可选参数replacement来指定取代目标部分的数组。请看下面的例子:
代码如下 | 复制代码 |
<?php |
一、运算符的分类
1、按操作数分类
1.!true // 一元运算符
2.$a+$b // 二元运算符
3.true ? 1:0 // 三元运算符
2、按操功能分类
(1)算术运算符
1.+、-、x、/、%(取余)
(2)字符串运算符
1.. // 例如:$a = 'abc'.'efg';
(3)赋值运算符
1.= // 简单赋值
2.+=、-=、X=、/=、%=、.= // 复合赋值
3.++($a++、++$a)、 --($a--、--$a) // 递增递减
4.&($a = 1;$b = &a) // 引用赋值
(4)比较运算符
1.==、 ===(恒等于)、 !=、 !===、 <>(不等于)、 <、 >、 <=、 >=
(5)逻辑运算符
1.// 括号内的比括号外的优先级高
2.&&(and)、 ||(or)、 !(not)、 xor(异或)、
(6)位运算符
1.&(按位与)、 |(按位或)、 ~(按位非)、 ^(按位异或)、 <<(左位移)、 >>(右位移)
二、算术运算符
%取余,常见用法:1)整除运算 2)控制取值范围
实例:判断是否为闰年(四年一闰,百年不闰,四百年再闰)
1.// %会把两边的数转成整型后在整除
2.// %两边不能用小数或负数
3.if ((($year%4 == 0) && ($year%100 != 0)) || $year%400 == 0)
4.echo "闰年";
5.else
6.echo "平年";
三、赋值运算符
01.//先自身加10,然后赋值给自己,等价于 $a=$a+10
02.$a += 10;
03.
04.//前置递增递减,先递增递减再赋值
05.++$a
06.
07.//先赋值,再递增递减
08.$a++
09.
10.//实例
11.$a = 10;
12.$b = $a++
13.$c = --$b
14.结果:a=11 b=9 c=9
四、逻辑运算符
xor异或:相同为假(两个真或两个假=假),不同为真(一真一假=假)
Tips:注意与or区别,or两个真=真
逻辑运算符短路
1.1、&& //一个为假,则后面不作运算,一定为假
2.2、|| //一个为真,则后面不作运算,一定为真
3.
4.fopen ("test.php","r") or die("失败");
Tips:为运算符 & | 没有短路特性
五、位运算符
位操作:将整型转为32位二进制,字符串转为ANSCA码来处理
流程控制语句是任何程序中会碰到的一个条件判断语句了,下面本文章重点介绍php中流程控制分支结构基于语法与简单应用例子。一、PHP流程控制概述
1、分支结果(条件结构)
//单路分支:
if (condition) { //花括号后可以没有分号;
# code...
}
//双路分支
if (condition) {
# code...
} else {
# code...
}
//多路分支
if (condition) {
# code...
} elseif(condition) { //elseif 可写成else if
# code...
} else {
# code...
}
2、switch 多路分支结构
判断范围用if结构,单个值用switch
switch (variable) { //变量用整型和字符串
case 'value1':
case 'value2': //可以有多个case
# code...
break; //如果不加break,下一个case会继续执行
case 'value3':
# code...
break;
default: //默认值,可有可无
# code...
break;
}
二、PHP循环语句
1、while 循环
while (condition) { //先判断条件再执行
# code...
}
2、do while 循环
do { //先执行再判断条件
# code...
} while (condition); //注意不要遗漏分号
3、for 循环
for ($i=0; $i < ; $i++) { //一般用于计数,两个分号不能省略
# code...
}
实例:99乘法表
for ($i=1; $i < 10; $i++) {
for ($ii=1; $ii <= $i; $ii++) {
echo "$ii X $i = ".$ii*$i.' ';
}
echo "<br>";
}
三、退出循环语句
//退出本次循环,下次循环也不再进行
break
//退出本次循环,下次循环继续,只能用于循环体内(for,while,do-while)
coninue
//完全退出程序
exit
//函数执行返回值,结束函数的语句
return
退出多层循环
break 1 // 退出当前循环
break 2 // 退出2层循环
continue 2
错误实例
$i = 0;
while ($i < 10){
if ($i == 5)
continue;
echo "$i";
$i++; //注意这里的i++不会被执行,会产生死循环
}
一、函数的声明
1、语法结构
代码如下 | 复制代码 |
function 函数名 (参数列表) |
参数列表用逗号隔开,勿遗漏$变量符号
函数名不区分大小写,规则与变量一致
函数调用才执行,可先调用后声明
函数名不能重名,包括系统函数
2、函数调用
代码如下 | 复制代码 |
function sum($x,$y) //形参:在声明函数时声明的参数 sum(); |
二、函数中的变量
1、变量范围
局部变量:函数内部声明与使用的变量
全局变量:在函数外声明,脚本任何地方均可以使用
Tips:在PHP函数中使用全局变量,要通过global关键字将这个全局变量包含到函数中才能使用
代码如下 | 复制代码 |
$a = 1; demo(); |
2、PHP静态变量
静态变量可以在同一个函数中多次调用中共用
静态变量只能在函数或类中声明,不能在全局声明。
代码如下 | 复制代码 |
function demo($a = '') |
3、变量函数
代码如下 | 复制代码 |
$var = 'hello'; //变量名后面右括号,就寻找与变量值同名的函数 |
三、函数分类及声明
1、函数分类
代码如下 | 复制代码 |
//常规函数 //带mixed,表示可以传任何类型的数据 //带&参数的函数,这个参数只能是变量,变量值是动态的 //默认函数,即带[]中括号的函数,表示参数可选,若没有传值则使用默认值 //带有...参数的函数,表示可以传任意多个参数 |
2、声明多个参数函数
代码如下 | 复制代码 |
function Test() func_get_arg():返回参数列表中的第N个参数 function Test() |
使用实例
代码如下 | 复制代码 |
function cls_mysql() |
3、函数注释规范
代码如下 | 复制代码 |
/** * 用用演示函数 //函数功能,决定是否使用 * * @static * @access public * @param string $attributeName 属性名称 //函数参数,决定怎样调用 * @return string //函数的返回值,决定调用后怎么处理 */ public function demo($attributeName) { $attributeName = 'abc'; return $attributeName } |
四、Callback 回调函数
我们自定义一个函数A,但是我们不直接去调函数A,而是在函数B中去调用函数A,函数B通过接收函数A的名字和参数来实现对函数A的调用,函数A称为回调函数。
代码如下 | 复制代码 |
function A($x,$y) |
PHP回调函数的实现方法
php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持
代码如下 | 复制代码 |
//mixed call_user_func_array 以数组的形式接收回调函数的参数 //call_user_func的参数个数根据回调函数的参数来确定 |
实例:
代码如下 | 复制代码 |
//普通全局函数 echo "通过call_user_func_array调用函数f1:<br>"; echo "通过call_user_func调用函数f1:<br>"; //类 echo "调用类中非静态成员函数,该成员函数中有this调用了对象中的成员:<br>"; echo "调用类中非静态成员函数,该函数没有调用对象中的成员,没有this:<br>"; echo "调用类中静态成员函数:<br>"; |
五、内部函数
在函数内部再声明函数,目的是在函数内部调用,用来帮助外部函数完成一些子功能
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
浅谈Java8 的foreach跳出循环break/return
这篇文章主要介绍了Java8 的foreach跳出循环break/return,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-28- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
下面小编就为大家带来一篇JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20- PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
SQL Server中row_number函数的常见用法示例详解
这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08- 分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30