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)这个数 ...
随机推荐
- 字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理(转载)
引言 在显示器上看见的文字.图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片.假设,你用显微镜把盘片放大,会看见盘片表面凹凸不 ...
- hdu4719 Oh My Holy FFF 线段树优化dp
思路 好久之前的了,忘记什么题目了 可以到我这里做luogu 反正就是hdu数据太水,导致自己造的数据都过不去,而hdu却A了 好像是维护了最大值和次大值,然后出错的几率就小了很多也许是自己写错了,忘 ...
- CVS导出&&自定义Attribute的使用
1.cvs导出:List转为byte[] /// <summary> /// CvsExport帮助类 /// </summary> public static class C ...
- jerichotab 初始化页面显示tab页中的第一个
tab初始化默认显示第一个内容,但是tab标签显示最后一个. 源代码: $.fn.initJerichoTab({ renderTo: '#consumable', uniqueId: 'jerich ...
- bam/sam格式说明--转载
在SAM输出的结果中每一行都包括十二项通过Tab分隔,从左到右分别是: 1 序列的名字(Read的名字) 2 概括出一个合适的标记,各个数字分别代表 1 序列是一对序列中的一个 2 比 ...
- shell 关系运算符
关系运算符 关系运算符只支持数字,不支持字符串,除非字符串的值是数字. 下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 -eq 检测两个数是否相等,相等返 ...
- 【Golang】Debug :decoding dwarf section info at offset 0x0: too short
解决方法 通过下面的方式升级dlv 来解决这个问题: go get -u github.com/derekparker/delve/cmd/dlv 下面是我记录的定位问题的过程 问题描述 博主升级到了 ...
- LRU缓存淘汰算法
什么是LRU算法? LRU是Least Recently Used的缩写,即最近最少使用,在有限的内容块中存储最近使用次数最多的数据,当内容块已满时,把最少使用的数据删除以便存储新的内容.
- C#匿名对象序列化
//匿名对象序列化 }; Console.WriteLine(JsonConvert.SerializeObject(obj)); //匿名集合序列化 List<object> list ...
- 雷林鹏分享:C# 枚举(Enum)
C# 枚举(Enum) 枚举是一组命名整型常量.枚举类型是使用 enum 关键字声明的. C# 枚举是值数据类型.换句话说,枚举包含自己的值,且不能继承或传递继承. 声明 enum 变量 声明枚举的一 ...