<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数组处理函数的更多相关文章

  1. PHP:第四章——PHP数组查找,替换,过滤,判断相关函数

    <pre> <?php //查找,替换,过滤,判断相关函数 header("Content-Type:text/html;charset=utf-8"); /*知 ...

  2. PHP:第四章——PHP数组添加,删除,插入,分割,合并,及运算符

    <pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:赋值运算符 = 代码示例:数 ...

  3. UNP学习笔记(第十四章 高级I/O函数)

    本章讨论我们笼统地归为“高级I/O”的各个函数和技术 套接字超时 有3种方法在涉及套接字的I/O操作上设置超时 1.调用alarm,它在指定超时时期满时产生SIGALRM信号 2.在select中阻塞 ...

  4. PHP:第四章——PHP数组array_intersect计算数组交集

    <pre> <?php //array_intersect计算数组交集 header("Content-Type:text/html;charset=utf-8" ...

  5. PHP:第四章——PHP数组array_diff计算数组差集

    <pre> <?php header("Content-Type:text/html;charset=utf-8"); /*知识点一:array_diff — 计 ...

  6. PHP:第四章——PHP数组转换,统计,相关函数

    <pre> <?php //数组转换,统计,相关函数 header("Content-Type:text/html;charset=utf-8"); //coun ...

  7. ES6 常用总结——第三章(数组、函数、对象的扩展)

    1.1. Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结 ...

  8. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  9. 自学Java第四章——《数组》

    4.1 数组的相关概念和名词(了解) 1.数组(array): 一组具有相同数据类型的数据的按照一定顺序排列的集合. 把有限的几个相同类型的变量使用一个名称来进行统一管理. 2.数组名: (1)这个数 ...

随机推荐

  1. 20145317《网络对抗》Exp4 恶意代码分析

    20145317<网络对抗>Exp4 恶意代码分析 一.基础问题回答 (1)总结一下监控一个系统通常需要监控什么.用什么来监控. 通常监控以下几项信息: 注册表信息的增删添改 系统上各类程 ...

  2. 小朋友排队|2014年蓝桥杯B组题解析第十题-fishers

    小朋友排队 n 个小朋友站成一排.现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友. 每个小朋友都有一个不高兴的程度.开始的时候,所有小朋友的不高兴程度都是0. 如果某个小朋 ...

  3. HDU1143 (递推)题解

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  4. ZooKeeper与Kafka相关

    Kafka集群搭建: https://www.cnblogs.com/likehua/p/3999538.html https://www.cnblogs.com/mikeguan/p/7079013 ...

  5. 【第五章】 springboot + mybatis

    springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成.集成方式相当简单. 1.项目结构 2.pom.xml <!-- 与数 ...

  6. 基于R进行相关性分析--转载

    https://www.cnblogs.com/fanling999/p/5857122.html 一.相关性矩阵计算: [1] 加载数据: >data = read.csv("231 ...

  7. 说说前端那些事之ajax

    原生ajax请求 前些日子,忙着考驾照,没有时间对知识进行总结,感到十分惭愧啊,刚好趁现在有时间,做个知识总结,希望对各位有所帮助. 很多人都知道ajax是用来进行数据请求的,但是具体的请求方法会有些 ...

  8. 【NOI2013】树的计数

    Description 我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的DFS序以及BFS序.两棵不同的树的DFS序有可能相同,并且它们的BFS序也有可能相同, ...

  9. Intellij IDEA 使用spring-boot-devtools无效解决办法一

    Intellij IDEA 使用spring-boot-devtools maven依赖 ``` <dependency> <groupId>org.springframewo ...

  10. Jmeter 测试API接口 查看接口的幂等问题

    背景介绍: 比如一个注册接口,要求填入的手机号与DB中已有的不能重复, 如果手机号码重复,则此次注册失败,不会新增会员数据: 如果不重复,则注册成功(忽略其他因素). 但是用20个并发,同样的请求,请 ...