PHP:第四章——PHP数组处理函数
<pre>
<?php
//数组处理函数
header("Content-Type:text/html;charset=utf-8");
//compact();建立一个数组,包含变量名和他们的值。
//例1:
/*$a=1;$b=2;$c=3;
$arr=compact('a','b','c');
print_r($arr);*/
/*输出:Array([a] => 1 [b] => 2 [c] => 3)*/ //例2:
/*$a=1;$b=2;$c=3;
$abc=array('a','b','c');
$arr=compact($abc);
print_r($arr);*/
/*输出:Array([a] => 1 [b] => 2 [c] => 3)*/ //例3:
/*$a=1;$b=2;$c=3;
$php='PHP';
$abc=array('a','B','c',array('php','seo'));
$arr=compact($abc);
print_r($arr);*/
/*输出:Array([a] => 1 [c] => 3 [php] => PHP)*/ //extract();从数组中将变量导入到当前的符号表。
//功能:本函数用来将变量从数组中导入到当前的符号表中,键名当作变量名,值作为变量的值。
/*函数原形:int extract ( array &$var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix = NULL ]] )
检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。
参数说明:必须使用关联数组,数字索引的数组将不会产生结果,除非用了 EXTR_PREFIX_ALL 或者 EXTR_PREFIX_INVALID。
extract_type:对待非法/数字和冲突的键名的方法将根据 extract_type 参数决定。
可以是以下值之一:
EXTR_OVERWRITE 如果有冲突,覆盖已有的变量。
EXTR_SKIP 如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME 如果有冲突,在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL 给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID 仅在非法/数字的变量名前加上前缀 prefix。
EXTR_IF_EXISTS 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。
EXTR_PREFIX_IF_EXISTS仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。
EXTR_REFS 将变量作为引用提取。这有力地表明了导入的变量仍然引用了 如果没有指定 extract_type,则被假定为 EXTR_OVERWRITE。 注意事项:
prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。 如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线。
*/
//例:
/*$arr=array('a'=>1,'b'=>2,'c'=>3);
extract($arr);
echo $a,$b,$c;//输出:123*/ //list();把数组中的值赋给一些变量;
//例:
/*$arr=array(1,2,3);
list($a,$b,$c)=$arr;
echo $a,$b,$c;//输出:123*/
//例:
/*$arr=array(4=>'肆',3=>'叁',2=>'贰',1=>'壹',0=>'零');
list($a,$b,$c)=$arr;
echo $a,$b,$c;//输出:零 壹 贰*/
//这种赋值并不是从左到右进行赋值,而是根据索引从0开始依次索引。 //range 建立一个包含指定范围单元的数组
/*函数原形:array range ( mixed $start , mixed $end [, number $step = 1 ] )
参数说明:
start 序列的第一个值。
limit 序列结束于 limit 的值。
step 如果给出了 step 的值,它将被作为单元之间的步进值。step 应该为正值。如果未指定,step 则默认为 1。
返回的数组中从 start 到 limit 的单元,包括它们本身。
*/
/*$arr=range(1,6,2);
print_r($arr);*/
/*
Array
(
[0] => 1
[1] => 3
[2] => 5
)
*/ /*知识点五:key 从关联数组中取得键名
原形:mixed key ( array &$array )
功能:key() 函数返回数组中内部指针指向的当前单元的键名。 但它不会移动指针。如果内部指针超过了元素列表尾部,或者数组是空的,key() 会返回 NULL。*/
//例:
/*$a=array('zg'=>'中国','rm'=>'人民');
var_dump(key($a));//输出:string 'zg' (length=2)
*/
/*知识点七:current, each, end, next, pos, prev, reset */
/*
1) current — 返回数组中的当前单元
原形:mixed current ( array &$array )
别名函数:pos
每个数组中都有一个内部的指针指向它"当前的"单元,初始指向插入到数组中的第一个单元。
返回值:返回当前被内部指针指向的数组单元的值,并不移动指针。
如果内部指针指向超出了单元列表的末端,current() 返回 FALSE。
注意:此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值。
应使用 === 运算符来测试此函数的返回值。
*/
/*$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport); // $mode = 'foot';
$mode = end($transport); // $mode = 'plane';
$mode = current($transport); // $mode = 'plane'; $arr = array();
var_dump(current($arr)); // bool(false) $arr = array(array());
var_dump(current($arr)); // array(0) { }*/ /*2) each — 返回数组中当前的键/值对并将数组指针向前移动一步
原形:array each ( array &$array )
在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。
如果要再用 each 遍历数组,必须使用 reset()。
返回值:
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。
键值对被返回为四个单元的数组,键名为0,1,key和 value。
单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
如果内部指针越过了数组的末端,则 each() 返回 FALSE。*/ /*$transport = array('foot', 'bike', 'car', 'plane');
$a = each($transport) ;
print_r($a);*/
/*输出:Array ( [1] => foot [value] => foot [0] => 0 [key] => 0 )*/
//each() 经常和 list() 结合使用来遍历数组
/*$school = array('d' => '动', 'l' => '没', 'x' => '学', 'y' => '院');
reset($school);
while (list($key, $val) = each($school)) {
echo "$key => $val\n";
}*/
//输出:d => 动 l => 没 x => 学 y => 院 /*3) end — 将数组的内部指针指向最后一个单元
mixed end ( array &$array )
功能:该数组是通过引用传递的,因为它会被这个函数修改。
这意味着你必须传入一个真正的变量,而不是函数返回的数组,因为只有真正的变量才能以引用传递。
返回值:返回最后一个元素的值,或者如果是空数组则返回 FALSE。
*/
/*$arr=array('zg'=>'中国','rm'=>'人民');
var_dump(end($arr));//输出:string '人民' (length=6)
*/
/*4) next — 将数组中的内部指针向前移动一位
next() 和 current() 的行为类似,只有一点区别,在返回值之前将内部指针向前移动一位。
这意味着它返回的是下一个数组单元的值并将数组指针向前移动了一位。
原形:mixed next ( array &$array )
返回值:返回数组内部指针指向的下一个单元的值,或当没有更多单元时返回 FALSE。
注意:函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值。
应使用 === 运算符来测试此函数的返回值。
并且要注意如果数组中含有false值,用在遍历时候可能会产生不是我们想象的结果。
*/
/*$arr = array('d', 'l', false, 'y');
while(list($k,$v) = each($arr)){
echo $k, $v ,"<br>";
}
//输出:0d 1l 2 3y*/ /*5) prev — 将数组的内部指针倒回一位
原形:mixed prev ( array &$array )
prev() 和 next() 的行为类似,只除了它将内部指针倒回一位而不是前移一位。
返回数组内部指针指向的前一个单元的值,或当没有更多单元时返回 FALSE。
同样的对于元素为false或等价于false的请使用 each配合list进行遍历或使用foreach*/
/*6) reset — 将数组的内部指针指向第一个单元
原形:mixed reset ( array &$array )
功能:将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值。
返回值:返回数组第一个单元的值,如果数组为空则返回 FALSE。 */ $arr = array('动', '美丽', '学', '院');
echo next($arr);
echo reset($arr);
//输出:美丽,动 /*知识点六:array_reduce — 用回调函数迭代地将数组简化为单一的值
原形:mixed array_reduce ( array $input , callable $function [, mixed $initial = NULL ] )
回调函数格式:mixed callback ( mixed &$result , mixed $item )
参数:如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,
或者如果数组为空的话就作为最终返回值。
返回值:返回结果值
*/
$a =range(1,10);
$b = array_reduce($a,'F') ;
echo $b; //结果55 function F($rs,$v){
$rs += $v;
return $rs;
} ?>
PHP:第四章——PHP数组处理函数的更多相关文章
- PHP:第四章——PHP数组查找,替换,过滤,判断相关函数
<pre> <?php //查找,替换,过滤,判断相关函数 header("Content-Type:text/html;charset=utf-8"); /*知 ...
- PHP:第四章——PHP数组添加,删除,插入,分割,合并,及运算符
<pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:赋值运算符 = 代码示例:数 ...
- UNP学习笔记(第十四章 高级I/O函数)
本章讨论我们笼统地归为“高级I/O”的各个函数和技术 套接字超时 有3种方法在涉及套接字的I/O操作上设置超时 1.调用alarm,它在指定超时时期满时产生SIGALRM信号 2.在select中阻塞 ...
- PHP:第四章——PHP数组array_intersect计算数组交集
<pre> <?php //array_intersect计算数组交集 header("Content-Type:text/html;charset=utf-8" ...
- PHP:第四章——PHP数组array_diff计算数组差集
<pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:array_diff — 计 ...
- PHP:第四章——PHP数组转换,统计,相关函数
<pre> <?php //数组转换,统计,相关函数 header("Content-Type:text/html;charset=utf-8"); //coun ...
- ES6 常用总结——第三章(数组、函数、对象的扩展)
1.1. Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结 ...
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- 自学Java第四章——《数组》
4.1 数组的相关概念和名词(了解) 1.数组(array): 一组具有相同数据类型的数据的按照一定顺序排列的集合. 把有限的几个相同类型的变量使用一个名称来进行统一管理. 2.数组名: (1)这个数 ...
随机推荐
- Bi-shoe and Phi-shoe(欧拉函数/素筛)题解
Bi-shoe and Phi-shoe Bamboo Pole-vault is a massively popular sport in Xzhiland. And Master Phi-shoe ...
- Spring编译AOP项目报错
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springfram ...
- kaggle CTR预估
参考涛哥之前做过的CTR预估project,学习下CTR预估的相关知识:http://blog.csdn.net/hero_fantao/article/category/6877765 目标:本周末 ...
- NOI 4977 怪盗基德的滑翔翼(LIS)
http://noi.openjudge.cn/ch0206/4977/ 描述: 怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯.而他最为突出的地方,就是他每次都能逃脱中村警部的重重围 ...
- R语言低级绘图函数-abline 转载
abline 函数的作用是在一张图表上添加直线, 可以是一条斜线,通过x或y轴的交点和斜率来确定位置:也可以是一条水平或者垂直的线,只需要指定与x轴或y轴交点的位置就可以了 常见用法: 1)添加直线 ...
- C# 集合-并发处理-锁OR线程 (转载)
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...
- Eclipse如何快速改变主题颜色
厌倦了Eclipse的白底黑子,我们来更换下Eclipse的主题颜色,让眼睛更舒服一点 首先先进入网址:http://eclipsecolorthemes.org/ 选择一个主题进入,点击进入如下: ...
- ORACLE 多表查询优化收集整理
搞WEB的离不开数据库,在一个层面上,对数据库的熟练程度决定了很多的事情. 本文就大家都纠结的ORACLE多表查询的性能问题给出一系列个优化方法,那这些都是项目中长期用到的,所以很熟,很熟,已经成为习 ...
- 设置网站URL启动
当新建一个MVC WEB程序 当你打开一个视图按F5运行 这时候并且不能政策运行会出现与个错误 无法找到资源. 这时候站点的默认设置是 把这个个默认设置更改成 红色框框的地方为修改点 你以为这样就完了 ...
- MongoDB(课时25 地理信息索引)
3.6.4 地理信息索引 地理信息索引分为两类:2D平面索引,2DSphere球面索引.在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标. 范例:定义一个shop的集合 db. ...