文档章节

PHP_005 数组

g00m
 g00m
发布于 2015/02/22 15:07
字数 2527
阅读 100
收藏 2

数组是一个能在单个变量中存储多个值的特殊变量。

创建数组

在 PHP 中,array() 函数用于创建数组:

array();

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组

  • 关联数组 - 带有指定的键的数组,每个键关联一个值

  • 多维数组 - 包含一个或多个数组的数组

数值数组

这里有两种创建数值数组的方法:

自动分配 ID 键(ID 键总是从 0 开始):

$cars=array("Volvo","BMW","Toyota");

人工分配 ID 键:

$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";

下面的实例创建一个名为 $cars 的数值数组,并给数组分配三个元素,然后打印一段包含数组值的文本:

<?php
    $cars=array("Volvo","BMW","Toyota");
    echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

count() 函数

count() 函数用于返回数组的长度(元素的数量):

<?php
    $cars=array("Volvo","BMW","Toyota");
    echo count($cars);
?>

遍历数值数组

遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:

<?php
    $cars=array("Volvo","BMW","Toyota");
    $arrlength=count($cars);
    for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

关联数组

关联数组是使用您分配给数组的指定的键的数组。

这里有两种创建关联数组的方法:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

or:

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

随后可以在脚本中使用指定的键:

<?php
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    echo "Peter is " . $age['Peter'] . " years old.";
?>

遍历关联数组

遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

<?php
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    foreach($age as $x=>$x_value)
    {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "<br>";
    }
?>

多维数组

多维数组是包含一个或多个数组的数组。

在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。

实例

在这个实例中,我们创建了一个自动分配 ID 键的多维数组:

$families = array
(
    "Griffin"=>array
        (
        "Peter",
        "Lois",
        "Megan"
        ),
    "Quagmire"=>array
        (
        "Glenn"
        ),
    "Brown"=>array
        (
        "Cleveland",
        "Loretta",
        "Junior"
        )
);

上面的数组将输出如下:

Array
(
[Griffin] => Array
    (
    [0] => Peter
    [1] => Lois
    [2] => Megan
    )
[Quagmire] => Array
    (
    [0] => Glenn
    )
[Brown] => Array
    (
    [0] => Cleveland
    [1] => Loretta
    [2] => Junior
    )
)

实例 2

让我们试着显示上面数组中的某个值:

echo "Is " . $families['Griffin'][2] .
 
" a part of the Griffin family?";

上面的代码将输出:

Is Megan a part of the Griffin family?

数组排序

  • sort() - 对数组进行升序排列

  • rsort() - 对数组进行降序排列

  • asort() - 根据关联数组的值,对数组进行升序排列

  • ksort() - 根据关联数组的键,对数组进行升序排列

  • arsort() - 根据关联数组的值,对数组进行降序排列

  • krsort() - 根据关联数组的键,对数组进行降序排列


sort() - 对数组进行升序排列

下面的实例将 $cars 数组中的元素按照字母升序排列:

<?php

$cars=array("Volvo","BMW","Toyota");

sort($cars);

?>

下面的实例将 $numbers 数组中的元素按照数字升序排列:

<?php

$numbers=array(4,6,2,22,11);

sort($numbers);

?>

rsort() - 对数组进行降序排列

下面的实例将 $cars 数组中的元素按照字母降序排列:

<?php

$cars=array("Volvo","BMW","Toyota");

rsort($cars);

?>

下面的实例将 $numbers 数组中的元素按照数字降序排列:

<?php

$numbers=array(4,6,2,22,11);

rsort($numbers);

?>

asort() - 根据数组的值,对数组进行升序排列

下面的实例根据数组的值,对关联数组进行升序排列:

<?php

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

asort($age);

?>

ksort() - 根据数组的键,对数组进行升序排列

下面的实例根据数组的键,对关联数组进行升序排列:

<?php

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

ksort($age);

?>

arsort() - 根据数组的值,对数组进行降序排列

下面的实例根据数组的值,对关联数组进行降序排列:

<?php

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

arsort($age);

?>

krsort() - 根据数组的键,对数组进行降序排列

下面的实例根据数组的键,对关联数组进行降序排列:

<?php

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

krsort($age);

?>


Array 函数

函数 描述
array() 创建数组。
array_change_key_case() 返回其键均为大写或小写的数组。
array_chunk() 把一个数组分割为新的数组块。
array_column() 返回输入数组中某个单一列的值。
array_combine() 通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。
array_count_values() 用于统计数组中所有值出现的次数。
array_diff() 比较数组,返回两个数组的差集(只比较键值)。
array_diff_assoc() 比较数组,返回两个数组的差集(比较键名和键值)。
array_diff_key() 比较数组,返回两个数组的差集(只比较键名)。
array_diff_uassoc() 比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)。
array_diff_ukey() 比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。
array_fill() 用给定的键值填充数组。
array_fill_keys() 用给定的指定键名的键值填充数组。
array_filter() 用回调函数过滤数组中的元素。
array_flip() 反转/交换数组中的键名和对应关联的键值。
array_intersect() 比较数组,返回两个数组的交集(只比较键值)。
array_intersect_assoc() 比较数组,返回两个数组的交集(比较键名和键值)。
array_intersect_key() 比较数组,返回两个数组的交集(只比较键名)。
array_intersect_uassoc() 比较数组,返回两个数组的交集(比较键名和键值,使用用户自定义的键名比较函数)。
array_intersect_ukey() 比较数组,返回两个数组的交集(只比较键名,使用用户自定义的键名比较函数)。
array_key_exists() 检查指定的键名是否存在于数组中。
array_keys() 返回数组中所有的键名。
array_map() 将用户自定义函数作用到给定数组的每个值上,返回新的值。
array_merge() 把一个或多个数组合并为一个数组。
array_merge_recursive() 递归地把一个或多个数组合并为一个数组。
array_multisort() 对多个数组或多维数组进行排序。
array_pad() 将指定数量的带有指定值的元素插入到数组中。
array_pop() 删除数组中的最后一个元素(出栈)。
array_product() 计算数组中所有值的乘积。
array_push() 将一个或多个元素插入数组的末尾(入栈)。
array_rand() 从数组中随机选出一个或多个元素,返回键名。
array_reduce() 通过使用用户自定义函数,迭代地将数组简化为一个字符串,并返回。
array_replace() 使用后面数组的值替换第一个数组的值。
array_replace_recursive() 递归地使用后面数组的值替换第一个数组的值。
array_reverse() 将原数组中的元素顺序翻转,创建新的数组并返回。
array_search() 在数组中搜索给定的值,如果成功则返回相应的键名。
array_shift() 删除数组中的第一个元素,并返回被删除元素的值。
array_slice() 返回数组中的选定部分。
array_splice() 把数组中的指定元素去掉并用其它值取代。
array_sum() 返回数组中所有值的和。
array_udiff() 比较数组,返回两个数组的差集(只比较键值,使用一个用户自定义的键名比较函数)。
array_udiff_assoc() 比较数组,返回两个数组的差集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_udiff_uassoc() 比较数组,返回两个数组的差集(比较键名和键值,使用两个用户自定义的键名比较函数)。
array_uintersect() 比较数组,返回两个数组的交集(只比较键值,使用一个用户自定义的键名比较函数)。
array_uintersect_assoc() 比较数组,返回两个数组的交集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_uintersect_uassoc() 比较数组,返回两个数组的交集(比较键名和键值,使用两个用户自定义的键名比较函数)。
array_unique() 删除数组中重复的值。
array_unshift() 在数组开头插入一个或多个元素。
array_values() 返回数组中所有的值。
array_walk() 对数组中的每个成员应用用户函数。
array_walk_recursive() 对数组中的每个成员递归地应用用户函数。
arsort() 对关联数组按照键值进行降序排序。
asort() 对关联数组按照键值进行升序排序。
compact() 创建一个包含变量名和它们的值的数组。
count() 返回数组中元素的数目。
current() 返回数组中的当前元素。
each() 返回数组中当前的键/值对。
end() 将数组的内部指针指向最后一个元素。
extract() 从数组中将变量导入到当前的符号表。
in_array() 检查数组中是否存在指定的值。
key() 从关联数组中取得键名。
krsort() 对关联数组按照键名降序排序。
ksort() 对关联数组按照键名升序排序。
list() 把数组中的值赋给一些数组变量。
natcasesort() 用"自然排序"算法对数组进行不区分大小写字母的排序。
natsort() 用"自然排序"算法对数组排序。
next() 将数组中的内部指针向前移动一位。
pos() current() 的别名。
prev() 将数组的内部指针倒回一位。
range() 创建一个包含指定范围的元素的数组。
reset() 将数组的内部指针指向第一个元素。
rsort() 对数值数组进行降序排序。
shuffle() 把数组中的元素按随机顺序重新排列。
sizeof() count() 的别名。
sort() 对数值数组进行升序排序。
uasort() 使用用户自定义的比较函数对数组中的键值进行排序。
uksort() 使用用户自定义的比较函数对数组中的键名进行排序。
usort() 使用用户自定义的比较函数对数组进行排序。

本文转载自:

共有 人打赏支持
下一篇: PHP_004 运算符
g00m
粉丝 5
博文 51
码字总数 37146
作品 0
广州
私信 提问
PHP 性能分析10则

下面我们根据小程序来验证一些常见的性能差别。 2.1、使用 echo 还是 print 在有的建议规则中,会建议使用 echo ,而不使用 print。说 print 是函数,而 echo 是语法结构。实际上并不是如此,...

botkenni
2016/10/11
19
0
PHP和MYSQL中的“逗号”

在网站开发中会经常用到多选框,比如说兴趣,爱好,工作地点等等内容的选择上。 如何在开发过程中将这些内容简洁优雅地保存到数据库中,并且高效的进行搜索,方便的进行修改,整个流程需要借...

DQinDalian
2014/02/20
0
0
su命令、sudo临时赋予其他用户权限命令、限制root用户远程登录

su命令 切换到其他用户格式:su - [用户名]su - user005 注意:加-保证完整的切换到user005的家目录下,不加-则切换到user005账号,但是当前目录却是之前用户的家目录; sudo命令 让普通用户...

若白衣
2017/12/27
0
0
PHP 性能分析与实验(二)——PHP 性能的微观分析

【编者按】此前,阅读过了很多关于 PHP 性能分析的文章,不过写的都是一条一条的规则,而且,这些规则并没有上下文,也没有明确的实验来体现出这些规则的优势,同时讨论的也侧重于一些语法要...

OneAPM蓝海讯通
2015/09/09
71
0
usermod命令、passwd密码管理、mkpasswd密码生成工具

usermod命令 usermod命令用于修改用户帐号usermod可用来修改用户帐号的各项设定参数 -c  修改用户帐号的备注文字。 -d  修改用户登入时的目录。 -e  修改帐号的有效期限。 -f  修改在密码...

若白衣
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

10分钟读懂阿里巴巴高级专家在Flutter Live2018的分享

作者:闲鱼技术-宗心 12月4日,google flutter团队宣布第一个flutter正式版本发布。次日,Flutter Live Beijing 会议上,google flutter团队邀请了在这一技术方案中重要的合作伙伴闲鱼团队分...

阿里云官方博客
13分钟前
1
0
RxJava window操作符

原文:https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%204%20-%20Concurrency/3.%20Sequences%20of%20coincidence.md Sequences of coincidence Rx试图避免管道(pipeline)外......

woshixin
20分钟前
1
0
05.Beetl标签函数以及定界符、占位符介绍---《Beetl视频课程》

本期视频实现了博客的详情页面; 内容简介:使用了标签函数layout完成详情功能 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK #标签函数 layo...

Gavin-King
21分钟前
1
0
谷歌浏览器的打印功能

var OpenWindow = window.open(""); OpenWindow.document.write("<HTML>"); OpenWindow.document.write("<HEAD>"); OpenWindow.document.write("<meta http-equiv=......

卖星星的小矮人
22分钟前
1
0
曼哈顿距离(Manhattan Distance )详解

概念 曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|。对于一个具有正南正北、正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南...

hejunbinlan
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部