PHP数组函数知识汇总

本文为大家分享了PHP数组函数基础知识,供大家参考,具体内容如下

数组array是非常重要的数据类型。相对于其他的数据类型,它更像是一种结构,而这种结果构可以存储一系列数值。数组能够在单一变量名中存储许多值,并且能够通过引用下标号来访问某个值。
在 PHP 中,有三种数组类型:
索引数组 - 带有数字索引的数组
关联数组 - 带有指定键的数组
多维数组 - 包含一个或多个数组的数组

一、创建数组

array(key => value)

1、创建索引数组

使用array()函数声明数组。PHP属于弱类型语言相对较灵活和方便,也可以直接是数组的元素值value,不需要键值key,索引是自动分配的(索引从 0 开始)。
例:

array("1" => "百度","2" => "阿里","3" => "腾讯");
或者是不使用键值:
array("百度","阿里","腾讯");
当然也可以写成:
$arr[0] = "百度";
$arr[1] = "阿里";
$arr[2] = "腾讯";

2、创建关联数组

关联数组和索引数组类似,只是关联数组不能够像索引数组的键名那样只能够为数字,它可以是数值和字符串以及混合形式,判断一个数组是否为关联数组的依据是:数组中的键名是否存在一个不是数字的。不是就是关联。

array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯");

3、多维数组

array(array(),array()) 二维数组

获得数组的长度 - count() 函数

<?php
$arr = array("百度","阿里","腾讯");
echo count($arr);
?> //结果返回3(说明数组中有三个元素)

二、遍历数组

输出数组中元素的值。对于索引数组常用for、foreach;对于关联数组常用foreach。使用print_r()函数打印循环后的结果,也可以用var_dump()。

1、遍历索引数组

遍历并输出索引数组的所有值,可以使用for、 foreach(array_expression as value)、foreach(arrayexpressionaskey => $value) 循环,如下:

使用for循环

<?php
$arr = array("百度","阿里","腾讯");
$arrlen = count($arr);//获取数组的长度
for ($i=0; $i <$arrlen ; $i++) {
  $data[] = $arr[$i];
}
echo "<pre>"; //换行显示
print_r($data);

打印结果显示如下:
Array
(
    [0] => 百度
    [1] => 阿里
    [2] => 腾讯
)
使用foreach循环

<?php
$arr = array("百度","阿里","腾讯");
foreach ($arr as $value) {
  $data[] = $value;
}
echo "<pre>"; //换行显示
print_r($data);//打印结果和上面一样

注意:data后面有一个数组符号[],为什么呢?

2、遍历关联数组

遍历并输出关联数组的所有值,可以使用 foreach (array_expression as key=>value) 循环,如下:

<?php
$arr = array("李彦宏" => "百度","马云" => "阿里","马化腾" => "腾讯");
foreach ($arr as $key => $value) {
  $data[$key] = $value;
}
echo "<pre>"; //换行显示
print_r($data);

打印结果显示:

Array
(
  [李彦宏] => 百度
  [马云] => 阿里
  [马化腾] => 腾讯
)

注意到没?此时的data后是[$key]?而不是[]
一个数关联数组一个是数字索引数组,

三、增加删除数组的元素

在数组元素的尾部增加
array_push(array,value1,value2…) 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。
该函数等于多次调用 array[]=value。

<?php
$arr = array("百度","阿里","腾讯");
array_push($arr,"知乎","微博");
echo "<pre>"; //换行显示
print_r($arr);
//打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [3] => 知乎
  [4] => 微博
)

在数组元素的开始增加
array_unshift(array,value1,value2,value3…) 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。

<?php
$arr = array("百度","阿里","腾讯");
array_unshift($arr,"知乎","微博");
echo "<pre>"; //换行显示
print_r($arr);
//打印结果显示:
Array
(
  [0] => 知乎
  [1] => 微博
  [2] => 百度
  [3] => 阿里
  [4] => 腾讯
)

在数组元素的尾部删除
array_pop(array) 函数删除数组中的最后一个元素。

<?php
$arr = array("百度","阿里","腾讯");
array_pop($arr);
echo "<pre>"; //换行显示
print_r($arr);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
)

在数组元素的开始删除
array_shift(array) 函数删除数组中第一个元素 并可以返回被删除元素的值。

<?php
$arr = array("百度","阿里","腾讯");
array_shift($arr);
echo "<pre>"; //换行显示
print_r($arr);
打印结果显示:
Array
(
  [0] => 阿里
  [1] => 腾讯
)

移除数组中重复的值
array_unique(array) 函数移除数组中的重复的值,并返回结果数组。

<?php
$arr = array("百度","阿里","腾讯","百度","微博");
$data = array_unique($arr);
echo "<pre>";
print_r($data);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [4] => 微博
)

四、定位数组元素

搜索数组中存在的值
in_array(search,array,type)检查数组中是否存在指定的值。
如果给定的值 search 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。如果没有在数组中找到参数,函数返回 false。

<?php
$arr = array("百度","阿里","腾讯");
while (in_array("百度", $arr)) {
  echo "已经找到";
  break;
} //输出已经找到

在数组中根据条件取出一段值: array_slice(array,start,length,preserve)
start 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。
如果该值设置为正数,则从前往后开始取。
如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。

length 可选。数值。规定被返回数组的长度。
如果该值设置为整数,则返回该数量的元素。
如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。
如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。

<?php
$arr = array("百度","阿里","腾讯","知乎","微博");
$data = array_slice($arr,0,4);
echo "<pre>";
print_r($data);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [3] => 知乎
)

array_splice(array,start,length,array) 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。

<?php
$arr1 = array("百度","阿里","腾讯");
$arr2 = array("知乎","微博");
array_splice($arr1,0,2,$arr2);
echo "<pre>";
print_r($arr1);
打印结果显示:
Array
(
  [0] => 知乎
  [1] => 微博
  [2] => 腾讯
)

五、数组合并、拆分、比较

array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。

<?php
$arr1 = array("百度","阿里","腾讯");
$arr2 = array("知乎","微博");
$data = array_merge($arr1,$arr2);
echo "<pre>";
print_r($data);
打印结果显示:
Array
(
  [0] => 百度
  [1] => 阿里
  [2] => 腾讯
  [3] => 知乎
  [4] => 微博
)

递归追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并到一起,形成一个联合的数组。两者之间的区别在于,当某个输入数组中的某个键已经存在于结果数组中时该函数会采取不同的处理方法。array_merge()会覆盖前面存在的键/值对,将其替换为当前输入数组中的键/值对,而array_merge_recursive()将两个值合并在一起,形成一个新的数组并以原有的键作为数组名。其形式为:

$arr= array('one'=>'C', 'one'=>'B');
$arr1= array('three'=>'1', 'one'=>'2');
$arr2= array_merge_recursive($arr, $arr1);
echo "<pre>";
print_r($arr2);
打印结果显示:
Array
(
  [one] => Array
    (
      [0] => B
      [1] => 2
    )

  [three] => 1
)

合并两个数组
array_combine()函数会生成一个新数组,这个数组由一组提交的键和对应的值组成,其形式为:

$arr= array('A', 'B');
$arr1= array('1', '2');
$arr2= array_combine($arr, $arr1);
echo "<pre>";
print_r($arr2);
打印结果显示:
Array
(
  [A] => 1
  [B] => 2
)

求数组的交集
array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

$arr= array('A', 'B', 'C', 'D');
$arr1= array('A', 'B', 'E');
$arr2= array('A', 'F', 'D');
$arr3= array_intersect($arr, $arr1, $arr2);
echo "<pre>";
print_r($arr3);
打印结果显示:
Array
(
  [0] => A
)

注意:只有在两个元素有相同的数据类型时,array_intersect()才会认为它们相等。

求关联数组的交集
array_intersect_assoc()与array_intersect()基本相同,只不过它在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才被返回到结果数组中。其形式如下:

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');
$arr1= array('a'=>'A', 'c'=>'B', 'E');
$arr2= array('a'=>'A', 'b'=>'F', 'd'=>'B');
$arr3= array_intersect_assoc($arr, $arr1, $arr2);
echo "<pre>";
print_r($arr3);
打印结果显示:
Array
(
  [a] => A
)

求关联数组的差集
函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键,因此,只在第一个数组中出现而不在其他输入数组中出现的键/值对才会被返回到结果数组中。其形式如下:

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');
$arr1= array('a'=>'A', 'b'=>'B', 'e'=>'E');
$arr3= array_diff_assoc($arr, $arr1);
echo "<pre>";
print_r($arr3);
打印结果显示:
Array
(
  [c] => C
  [d] => D
)

其他有用的数组函数
返回一组随机的键 array_rand()函数将返回数组中的一个或多个键。其形式为:

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');
$arr1= array_rand($arr, 2);
echo "<pre>";
print_r($arr1);
打印结果显示:
 Array
(
  [0] => c
  [1] => d
) //每次刷新显示的结果都不一样

对数组中的值求和
array_sum()函数将数组内的所有值加在一起,返回最终的和,其形式如下:

$arr= array('A', 32, 12, 'B');
$count= array_sum($arr);
echo "<pre>";
print_r($count);

打印结果显示:
44

如果数组中包含其他数据类型(例如字符串),这些值将被忽略。

划分数组
array_chunk()函数将数组分解为一个多维数组,这个多维数组由多个包含size个元素的数组所组成。其形式如下:

$arr= array('A', 'B', 'C', 'D');
$arr1= array_chunk($arr, 2);
echo "<pre>";
print_r($arr1);

打印结果显示:

Array
(
  [0] => Array
    (
      [0] => A
      [1] => B
    )

  [1] => Array
    (
      [0] => C
      [1] => D
    )

)

处理数组时可调用函数有

array_filter(*array*,*callbackfunction*);
array_intersect_uassoc(*array1*,*array2*,*array3*...,*myfunction*)
array_intersect_ukey(*array1*,*array2*,*array3*...,*myfunction*)
array_reduce(*array*,*myfunction*,*initial*)
array_walk(*array*,*myfunction*,*userdata*...)
……

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

(0)

相关推荐

  • 总结一些PHP中好用但又容易忽略的小知识

    本文主要给大家总结了PHP中一些好用的小知识,分享出来供大家参考学习,下面来看看详细的介绍: 1.PHP函数之判断函数是否存在 当我们创建了自定义函数,并且了解了可变函数的用法,为了确保程序调用的函数是存在的,经常会先使用function_exists判断一下函数是否存在.同样的method_exists可以用来检测类的方法是否存在. function func() { } if (function_exists('func')){ echo 'exists'; } 类是否定义可以使用class

  • PHP错误机制知识汇总

    PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课. 特别说明:文章的PHP版本使用5.5.32 PHP的错误级别 首先需要了解php有哪些错误.截至到php5.5,一共有16个错误级别 注意:尝试下面的代码的时候请确保打开error_log: error_reporting(E_ALL); ini_set('display_errors', 'On'); E_ERROR 这种错误是致命错误,会在页面显示Fatal Error, 当出现这种错误的时候,程序就无法继

  • PHP易混淆知识整理笔记

    1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1. $r = print "Hello World"; 这意味着print可用在一些复杂的表达式中,而echo则不行.但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句. 2.i

  • 9条PHP编程小知识及易犯的小错误

    变量声明 如果在一条语句中声明一个变量,如下所示:$var='value';编译器首先会求出语句右半部分的值,恰恰正是语句的这一部分常常会引发错误.如果使用的语法不正确,就会出现解析错误. 解析错误 例如,Parse error:解析错误,unexpected T_WHILE in c:program filesapache groupapachehtdocsscript.php on line 19每次确定了前一错误时,解析错误一个接一个地不断出现,PHP在第一个解析错误之后就停止执行脚本.而

  • PHP学习笔记之二 php入门知识

    PHP学习笔记之二 1. 数组 PHP的数组其实是一个关联数组,或者说是哈希表.PHP不需要预先声明数组的大小,可以用直接赋值的方式来创建数组.例如: //最传统,用数字做键,赋值 $state[0]="Beijing"; $state[1]="Hebei"; $state[2]="Tianjin"; //如果键是递增的数字,则可以省略 $city[]="Shanghai"; $city[]="Tianjin&quo

  • PHP容易忘记的知识点分享

    1.定义常量: 复制代码 代码如下: <?php //1 define("TAX_RATE",0.08); echo TAX_RATE; //输出0.08 //2 (PHP 5.3) const TAX_RATE2 =0.01; echo '--'.TAX_RATE2; //输出0.01 ?> 2.require 和require_once 区别: 前者遇到即包含文件,后者会判断是否已经包含过了,如果包含过了,则不再包含文件.一可以节省资源,二可以避免重复定义的错误. 3.

  • 新手学习PHP的一些基础知识分享

    一,PHP脚本代码标记 PHP的脚本是文件中一对特殊标记所包括的内容,如ASP是"<%....%>",PHP可看成是"<?...?>". 然而为了适应XML标准以将PHP嵌入到XML或XHTML中,PHP不建议使用短格式的"<?...?>",而建议使用长格式标记"<?php...?>" 此外PHP代码块还支持 <script language="php"

  • 有关php运算符的知识大全

    看似简单的东西,在实际运用中,还是很有意思的 算术运算符 运算符 名称 结果 $a + $b 加法 $a 和 $b 的和 $a - $b 减法 $a 和 $b 的差 $a * $b 乘法 $a 和 $b 的积 $a / $b 除法 $a 除以 $b 的商 $a % $b 取模 $a 除以 $b 的余数 递增/递减运算符 运算符 名称 结果 ++$a 前加 $a 的值加一,然后进行操作 $a++ 后加 $a 的值先进行操作,后加一 --$a 前减 $a 的值减一,然后进行操作 $a-- 后减 $a

  • 关于初学PHP时的知识积累总结

    PHP基础一.初识PHPPHP是与HTML混合使用的嵌入式语言.1.PHP标记默认标记<?php ?> 短标记<? ?>,需在php.ini中将short_open_tag选项开启 短标记和其他标记不提倡使用 2.关键字不区分大小写,用户自定义的类名和函数名不区分大小写,变量名区分大小写 3.输出boolean print(参数) 返回布尔值void echo(参数) 无返回值echo的效率要高一点 二.数据类型1.比较两个浮点数的通常方法是先移动若干小数位,然后转换为整型数据再进

  • php入门小知识

    1.下载一个集成的环境软件,也就是别人把所有的乱七八的放在了一块,做成软件,这种是SG式的,我觉的初学者用这种好点; 2.各自下载安装.php.zend.apache;这种方法最乱了,现在还没有搞清楚. 我是由于机上装有iis,于就是装了个php和zend就好.现在在服务器上可以同时运行php和asp. php是嵌入在html中运行的.如下: <?php      $a="你好";      $b=" php";      echo $a.$b; ?>

随机推荐