php 中的数组

数组的分类

从键值关系

关联数组:通常是指下标为字符串,并且该字符串大体可以表达出数据的含义的数组。
例:

$person = array(
“name” => “小花”,  
“age”=>18, 
“edu” => “大学毕业” ,
);

索引数组:
通常是指一个数组的下标是严格的从0开始的连续的数字下标——跟js数组一样。

从数组层次来分

一维数组:
就是一个数组中的每一个元素值,都是一个普通值(非数组值)
$arr1 = array(
“name” => “小花”,
“age”=>18,
“edu” => “大学毕业”
);

二维数组:
一个数组中的每一项,又是一个一维数组。
$arr1 = array(
“name” => array(‘小花’, ‘小芳’, ‘小明’, );
“age”=> array(18, 22, 19),
“edu” => array(“大学毕业”, ‘中学’, ‘小学’)
);

多维数组:
依此类推。。。

多维数组的一般语法形式:
$v1 = 数组名[下标][下标][…..]

数组指针和遍历原理

每个数组,其内部都有一个“指针”,该指针决定了该数组当前取值的时候,取到的元素。
foreach遍历过程中,都是依赖与该指针而进行的!

举例:$arr1 = array(2=>1, ‘dd’=>5, 1=>1.1, “abc”, 0=>true)

指针除了负责foreach循环的位置设定之外,还有其他一些函数也依赖于该指针:
1, v1=current( arr1); //取得 arr1false2 v1 = key( arr1// arr1中当前指针所指向的元素的下标,。。。。。false
3, v1=next( arr1 ); //将指针移向“下一个元素”,然后取得该下一个元素的值;
4, v1=prev( arr1); //将指针移向“上一个元素”,然后取得该上一个元素的值
5, v1=reset( arr1); //将指针移向“第一个元素”,然后取得该元素的值——数组指针初始化
6, v1=end( arr1); //将指针移向“最后一个元素”,然后取得该元素的值
7, v1=each( arr1); //取得当前元素的下标和值,然后移动指针到下一个位置。

for+next+reset遍历数组

reset( $arr1 );    //重置数组,即:数组指针初始化,这里,返回的数据被“丢弃”了。
$len = count( $arr1);
for$i = 0;  $i < $len  $i++){
$key = key ($arr1 );        //下标
$value = current( $arr1 );    //值
//然后这里就可以对$key 和 $value进行任何作为变量的操作
next($arr1);//这里,移动指针到下一个元素(也同时丢弃了返回值)
}

foreach 遍历细节探讨

• foreach也是正常的循环语法结构,可以有break和continue等操作。
• 遍历过程中值变量默认的传值方式是值传递。
• 遍历过程中值变量可以人为设定为引用传递:
o foreach( arras key => &$value){ … }
o 键变量不可以设定为引用传递

这里写图片描述

• foreach默认是原数组上进行遍历。但如果在遍历过程中对数组进行了某种修改或某种指针性操作(就是指前面的指针函数),则会复制数组后在复制的数组上继续遍历循环。

这里写图片描述
• foreach中如果值变量是引用传递,则无论如何都是在原数组上进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值