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)这个数 ...
随机推荐
- ["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]
转载自:http://blog.csdn.net/freshlover/article/details/19034079 这涉及到是否深入理解两个函数的格式与参数含义. 首先根据我对两个函数用法的了解 ...
- Python3基础 lambda 简单示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- BZOJ 3339 && luogu4137 Rmq Problem / mex(莫队)
P4137 Rmq Problem / mex 题目描述 有一个长度为n的数组{a1,a2,-,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. 输入输出格式 输入格式: 第一行n,m. ...
- mysql数据库分库分表(Sharding)
mysql数据库切分 前言 通过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制.一旦数据库过于庞大,尤其是当写入过于频繁,非常难由一台主机支撑的时候,我们还是会面临到扩展瓶 ...
- 2018/7/18Bad English
1 So instead of enjoying anime because it can portray interesting stories in a form that would be im ...
- javascript的一些在IE下不支持的函数小结
// ============ isArray ===============// // isArray function isArray(value){ return Object.prototyp ...
- HDU 6072 Logical Chain(Kosaraju+bitset)
http://acm.hdu.edu.cn/showproblem.php?pid=6072 题意: 给你$n*n$的矩阵,每次修改k条边,让你计算其中能相互到达的点对有多少. 思路: 其实就是求强连 ...
- ACMG遗传变异分类标准与指南
2015年,美国权威机构——美国医学遗传学与基因组学学会(ACMG)编写和发布了<ACMG遗传变异分类标准与指南>.为帮助我国医疗工作者和遗传咨询从业者更好地理解ACMG遗传变异分类标准. ...
- DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值
比如要求取出微信绑定的,没有解绑的 未绑定,指定字段为null 绑定的,指定字段为某个字符串 解绑的,有的客户用的是更新指定字段为1,有的客户更新指定字段为‘1’ 脏数据的存在,比如该字段为空字符 ...
- MVC 子对象数据传递
1.接受参数 public ActionResult Address(User user) { return View(); } 2. User对象类型 public class User { pub ...