php基础知识【函数】(1)数组array
一、排序
1、sort -- 从最低到最高排序,删除原有的键名,赋予新的键名【字母比数字高】
2、rsort -- 逆向排序(最高到最低),删除原有的键名,赋予新的键名【字母比数字高】
3、asort -- 正向排序,保持索引关系
4、arsort --逆向排序,保持索引关系
5、ksort --按照键名排序
6、krsort --按照键名逆向排序
(1)纯英文:$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);//=> Array ( [c] => apple [b] => banana [d] => lemon [a] => orange )
(2)纯数字:$fruits = array("d" => "341", "a" => "524", "b" => "75", "c" => "657");
asort($fruits);//=> Array ( [b] => 75 [d] => 341 [a] => 524 [c] => 657 )
(3)混合: $fruits = array("d" => "daf", "a" => "fasd", "b" => "234", "c" => "657");
asort($fruits);//=> Array ( [b] => 234 [c] => 657 [d] => daf [a] => fasd ) 先数字后字母
7、natsort --用“自然排序”算法排序
8、natcasesort --用“自然排序”算法进行排序,不区分大小写
9、usort -- 使用用户自定义的比较函数对数组中的值进行排序,删除原有的键名
10、uasort --使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
11、uksort --使用用户自定义的比较函数对数组中的键名进行排序
12、array_multisort -- 对多个数组或多维数组进行排序,关联键名保持不变,但数字键名会被重新索引。第一个参数必须是一个数组
13、array_reverse -- 返回一个单元顺序相反的数组
$input = array("php",array("green", "red"));
$result = array_reverse($input);//Array([0] => Array([0] => green,[1] => red),[1] => php)
$res = array_reverse($input, TRUE);//true表示保留原来的键名
二、key和value
1、key -- 返回数组中当前单元的键名。
2、array_key_exists -- 检查给定的键名或索引是否存在于数组中,也可用于对象
$search_array = array('first' => 1, 'second' => 4);
array_key_exists('first', $search_array));//存在时返回 TRUE
3、array_keys -- 返回数组中所有的键名
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));//Array([0] => 0,[1] => color)
4、array_values -- 返回数组中所有的值
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));//Array([0] => XL [1] => gold)
5、array_count_values -- 统计数组中所有的值出现的次数
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));//Array([1] =>2,[hello] =>2,[world] => 1)
6、array_flip -- 交换数组中的键和值,如果同一个值出现多次,只取最后一个,其它的都丢失。
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);//Array([1] => b,[2] => c)
7、array_search -- 在数组中搜索给定的值,如果成功则返回相应的键名
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
8、array_sum -- 计算数组中所有值的和
$a = array(2, 4, 6, 8);
echo "sum(a) = ".array_sum($a);//20
三、交集和差集
1、array_diff -- 计算数组的差集,返回数组,键名不用于比较
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);//Array([1] => blue)
2、array_diff_assoc -- 带索引检查计算数组的差集,返回数组,键名也用于比较,可多个数组比较
$array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array ("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);//Array([b] =>brown,[c] =>blue,[0] =>red)
3、array_diff_uassoc -- 用用户提供的回调函数做索引检查来计算数组的差集
function func($a, $b){if ($a === $b) {return 0;}}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "func");//Array([b] =>brown,[c] =>blue,[0] =>red)
4、array_intersect -- 计算数组的交集,键名不用于比较
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);//Array([a] =>green,[0] =>red)
5、array_intersect_assoc -- 带索引检查计算数组的交集,键名也用于比较
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result_array = array_intersect_assoc($array1, $array2);//Array([a] => green)
四、指针操作
1、current -- 返回数组中的当前单元
2、reset -- 将数组的内部指针指向第一个单元
3、end -- 将数组的内部指针指向最后一个单元
4、next -- 将数组中的内部指针向前移动一位
5、prev -- 将数组的内部指针倒回一位
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport); // $mode = 'bike';
$mode = next($transport); // $mode = 'car';
$mode = prev($transport); // $mode = 'bike';
6、each -- 返回数组中当前的键/值对并将数组指针向前移动一步
返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);//Array{[1] => bob[value] => bob [0] => 0 [key] => 0}
五、合并
1、array_merge_recursive -- 将一个或多个数组合并,如果数组中有相同键名,后一个值将不会覆盖原来的值,而是附加到后面。
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
//Array([color] => Array([favorite] => Array([0] =>red,[1] =>green),[0] => blue),[0] => 5,[1] => 10)
2、array_merge -- 合并一个或多个数组,如果字符串键名后面的将覆盖前一个,但数字键名相同,后面的值将不会覆盖原来的值,而是附加到后面。
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
//Array([color] =>green,[0] =>2,[1] =>4,[2] =>a,[3] =>b,[shape] =>trapezoid,[4] => 4)
3、array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);//Array([green]=>avocado,[red]=> apple,[yellow] =>banana)
六、取值
1、array_slice(array,offset[,length[,keys]]) -- 从数组中取出一段
offset非负,从数组中的此偏移量开始,为负,则从数组中距离末端这么远的地方开始
length正,数组中将有length个元素,为负将终止在距离数组末端这么远的地方。省略则从offset开始一直到数组的末端。
keys 设为 TRUE 保留键名,否则重置键名
2、array_rand(input,[num_req]) --从数组中随机取出一个或多个单元,num_req指明要取多少个,默认为 1。
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
七、去值和替代
1、array_splice (array,offset[,length[,replacement]])-- 把数组中的一部分去掉并用其它值取代 ,数字键名不被保留
offset:为正,从数组中该值指定的偏移量开始移除,为负,则从末尾倒数该值指定的偏移量开始移除
length:省略则移除数组中从 offset 到结尾的所有部分。为正则移除这么多单元。为负则移除从offset到数组末尾倒数 length 为止中间所有的单元
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);// $input is now array("red", "green")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);// $input is now array("red", "yellow")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");// $input is now array("red", "orange")
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));// $input is now array("red", "green","blue", "black", "maroon")
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");// $input is now array("red", "green","blue", "purple", "yellow");
2、array_unique -- 移除数组中重复的值,
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);//Array([a] => green,0] => red,[1] => blue)
$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);//array(2) { [0]=> int(4) [2]=> string(1) "3" }
3、array_pop -- 将数组最后一个单元弹出(出栈),数组的长度减一,使用本函数后会重置数组指针。
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);//Array([0] => orange,[1] => banana,[2] => apple)
print_r($fruit);//Array([0] => raspberry)
4、array_shift -- 将数组开头的单元移出数组,数字键名将改为从零开始计数,文字键名将不变
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);//Array([0] => banana,[1] => apple,[2] => raspberry)
print_r($fruit);//Array([0] => orange)
八、插入和填充
1、array_pad(input,pad_size,pad_value ) -- 用值将数组填补到指定长度
如果 pad_size 为正,则数组被填补到右侧,如果为负则从左侧开始填补。
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);// result is array(12, 10, 9, 0, 0)
$result = array_pad($input, -7, -1);// result is array(-1, -1, -1, -1, 12, 10, 9)
$result = array_pad($input, 2, "noop");// not padded
2、array_push -- 将一个或多个单元压入数组的末尾(入栈)
$stack = array("orange", "banana");
array_push($stack, "apple");//Array([0] => orange,[1] => banana,[2] => apple)
3、array_unshift -- 在数组开头插入一个或多个单元,数值键名重新计数,文字键名保持不变。
$queue = array("orange", "banana");
array_unshift($queue, "apple");//Array([0] => apple[1] => raspberry[2] => orange[3] => banana)
4、array_fill(start_index,num,value )-- 用给定的值填充数组
num: 填充的条目 start_index:指定键名的开始 value:填充的值
$a = array_fill(5, 4, 'banana');//Array([5]=>banana,[6]=>banana,[7]=>banana,[8]=>banana)
九、回调函数
1、array_filter -- 用回调函数过滤数组中的单元
function odd($var){return($var % 2 == 1);}
function even($var){return($var % 2 == 0);}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
print_r(array_filter($array1, "odd")); //Array([a] =>1,[c] =>3,[e] => 5)
print_r(array_filter($array2, "even")); //Array([0] =>6,[2] =>8,[4] =>10,[6] =>12)
2、array_map -- 将回调函数作用到给定数组的单元上
function cube($n){return($n * $n * $n);}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);//Array([0] =>1,[1] =>8,[2] =>27,[3] =>64,[4] =>125)
3、array_reduce -- 用回调函数迭代地将数组简化为单一的值
function rsum($v, $w){$v += $w; return $v;}
function rmul($v, $w){$v *= $w;return $v;}
$a = array(1, 2, 3, 4, 5);
$x = array();
$b = array_reduce($a, "rsum"); //15=1+2=3+4+5
$c = array_reduce($a, "rmul", 10);//1200(= 10*1*2*3*4*5)
$d = array_reduce($x, "rsum", 1);//1
十、其他
1、array_chunk -- 将一个数组分割成多个
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2)); //默认值是 FALSE,每个结果数组将用从零开始的新数字索引
print_r(array_chunk($input_array, 2, true));//TRUE表示数组中原来的键名
2、shuffle -- 打乱(随机排列单元的顺序)一个数组。 删除原有的键名,赋予新的键名
3、in_array -- 检查数组中是否存在某个值,区分大小写
4、数组和json互换
json_encode()--将PHP数组转换成Json。
json_decode()--将Json转换成PHP数组
php基础知识【函数】(1)数组array的更多相关文章
- JavaSE语法基础(3)---函数、数组
JavaSE语法基础(3)---函数.数组 函数的概念:实现特定功能的一段代码,可反复使用. 函数的出现减少代码冗余,提高代码的复用性,可读性,可维护性,可以使每个功能模块独立起来,方便分工合作. 函 ...
- C++ | C++ 基础知识 | 指针、数组与引用
1.指针 在 C++ 语言中存放及使用内存地址是通过指针和引用完成的. char c = 'a'; // 声明 c 变量,c 变量存储的是 'a' 的值. char* p = &c; // 声 ...
- javascript基础知识-函数
1.javascript中函数有两种定义方式: 函数语句定义和表达式定义 //函数有定义 function test(){ console.log("This is a function&q ...
- JavaScript基础之函数与数组
函数 函数的基本概念 为完成某一功能的程序指令(语句)的集合,称为函数.有的程序员把函数称为方法,希望大家不要被这两个名词搞晕了. 函数分为:自定义函数.系统函数(经常查看js帮助手册). j ...
- Java学习之旅基础知识篇:数组及引用类型内存分配
在上一篇中,我们已经了解了数组,它是一种引用类型,本篇将详细介绍数组的内存分配等知识点.数组用来存储同一种数据类型的数据,一旦初始化完成,即所占的空间就已固定下来,即使某个元素被清空,但其所在空间仍然 ...
- C语言中 指针的基础知识总结, 指针数组的理解
1: 指针变量所占的字节数与操作系统为位数有关,64位操作系统下,占8个字节,32位操作系统下,占4个字节 2: 指针变量的本质是用来放地址,而一般的变量是放数值的3: 脱衣服法则: a[2] 变成 ...
- 020PHP基础知识——函数(三)
<?php /** * 任何数量的参数: * func_get_args() 接收一个数组,数组里面包含所有参数 * func_num_args() 取得共有几个参数 * func_get_ar ...
- 复习C++_基础、函数、数组、字符串
程序的开发过程 程序 源程序:用源语言写的,有待翻译的程序: 目标程序:源程序通过翻译程序加工以后生成的机器语言程序: 可执行程序:连接目标程序以及库中的某些文件,生成的一个可执行文件,例如Windo ...
- javascript基础知识--函数定义
函数声明式 function funname( 参数 ){ ...执行的代码 } 声明式的函数并不会马上执行,需要我们调用才会执行:funname(); * 分号是用来分隔可执行JavaScript语 ...
- C#基础知识-函数的定义和调用(五)
函数也可以称为方法,可以很方便的把一些行为封装到函数里面,当调用这一函数时会把函数块里面的代码按照顺序执行,方法可以有多种形式,有无参数,有无返回值等. 1. 函数的定义 函数定义的基本格式: s ...
随机推荐
- Hibernate—第一个案例
百度百科上是这样写道的:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可 ...
- 通过rest接口获取自增id (twitter snowflake算法)
1. 算法介绍 参考 http://www.lanindex.com/twitter-snowflake%EF%BC%8C64%E4%BD%8D%E8%87%AA%E5%A2%9Eid%E7%AE% ...
- CFileDialog的使用方法简单介绍
CFileDialog文件选择对话框的使用:首先构造一个对象并提供对应的參数,构造函数原型例如以下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, L ...
- Android开发_字符串处理类-TextUtils类
对于字符串处理Android为我们提供了一个简单实用的TextUtils类,如果处理比较简单的内容不用去思考正则表达式不妨试试这个在android.text.TextUtils的类,主要的功能如下: ...
- iOS 开发之 ReactiveCocoa(基础)
前言 前段时间在看Masonry这个全新的第三方的布局框架的时候,开始了解了链式编程.后来慢慢的又开始了解函数式编程和响应式编程.在这集中的编程思想下,开始接触和研究了ReactiveCocoa这个框 ...
- docker build lnmp(未完成。。。)
docker pull centos # 拉取镜像到本地 docker run -i -t -p 8000:80 --name=centosDev centos cat /etc/redhat-rel ...
- PHP 支持的协议/封装协议列表
附录 L. 支持的协议/封装协议列表 目录 文件系统 Socket HTTP 和 HTTPS FTP 和 FTPS PHP 输入/输出流 压缩流 Secure Shell 2 音频流 以下是 PHP ...
- HTML5 新功能
HTML5 中的一些有趣的新特性: 用于绘画的 canvas 元素 用于媒介回放的 video 和 audio 元素 对本地离线存储的更好的支持 新的特殊内容元素,比如 article.footer. ...
- [综合|基础|语法] 最新的皮肤帮助类 UI_Misc_Helper (转载)
using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace ...
- .NET设计模式(10):装饰模式(Decorator Pattern)
.NET设计模式(10):装饰模式(Decorator Pattern) 装饰模式(Decorator Pattern) --.NET设计模式系列之十 年月..在....对于..由于使用装饰模 ...