定义

php中的数组array就是一个有序映射,把 value(值) 关联到 key(键)。

array()函数声明数组

php > $arr = array('name' => 'Tom',1 => 'Hello');

php > echo $arr['name'];

Tom

php > echo $arr[1];

Hello

直接为数组元素赋值

php > $arr['name'] = 'Tom';

php > $arr[1] = 'World';

php > print_r($arr);

Array

(

[name] => Tom

[1] => World

)

Note:

键(key)可以是一个整数(integer)或字符串(string),不能用数组和对象作为键(key)。这样做会导致一个警告:Illegal offset type。

值(value) 可以是任意类型的值。

数组的简单操作

用方括号的语法新建/修改,即给变量名加上一对空的方括号(“[]”)

删除数组或删除数组的一个键名/值对,用unset()

php > $arr = array('name' => 'Tom','age' => 12);

php > print_r($arr);

Array

(

[name] => Tom

[age] => 12

)

php > $arr['name'] = 'Jack';

php > $arr['id'] = 999;

php > print_r($arr);

Array

(

[name] => Jack

[age] => 12

[id] => 999

)

php > unset($arr);

php > print_r($arr);

Notice: Undefined variable: arr in php shell code on line 1 //未定义$arr

遍历数组foreach($array as $key => $value)

php > $arr = array(1 => 'Tom', 2 => 'Jack', 3 => 'Lucy');

php > foreach($arr as $key => $value){

echo $key.'=>'.$value."\n";

}

1=>Tom

2=>Jack

3=>Lucy

Note:

unset()函数允许删除数组中的某个键,但要注意数组将不会重建索引。重建索引可以使用函数array_values()

php > $arr = array(1 => 'Tom', 2 => 'Jack', 3 => 'Lucy');

php > unset($arr[2]);

php > print_r($arr);

Array

(

[1] => Tom

[3] => Lucy

)

php > print_r(array_values($arr));

Array

(

[0] => Tom

[1] => Lucy

)

数组常用函数

array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

array array_combine ( array $keys , array $values )

php > $arr = array('Tom','Jack','Lucy');

php > $arr2 = array('football','basketball','tennis');

php > print_r(array_combin($arr,$arr2));

Array

(

[Tom] => football

[Jack] => basketball

[Lucy] => tennis

)

array_count_values 统计数组中所有的值出现的次数

array array_count_values ( array $input )

php > $arr = array('Tom','Jack','football','Jack','football');

php > print_r(array_count_values($arr));

Array

(

[Tom] => 1

[Jack] => 2

[football] => 2

)

array_diff 计算数组的差集

array array_diff ( array $array1 , array $array2 [, array $ ... ] )

php > $arr = array('Tom','Jack','Lucy','Mark');

php > $arr2 = array('Jack','Tom','Mark');

php > print_r( array_diff($arr,$arr2));

Array

(

[2] => Lucy

)

Note: array_diff()返回一个数组,该数组包括了所有在 $arr1 中但是不在任何其它参数数组中的值。注意键名保留不变。

array_flip 交换数组中的键和值

array array_flip ( array $trans )

php > $arr = array('Tom' => 'football','Jack' => 'basketball','Lucy' => 'tennis');

php > print_r (array_flip($arr));

Array

(

[football] => Tom

[basketball] => Jack

[tennis] => Lucy

)

Note: 如果同一个值出现多次,则最后一个键名将作为它的值,所有其它的都将丢失。

array_keys 返回数组中所有的键名

array array_keys ( array $input [, mixed $search_value [, bool $strict ]] )

如果指定了可选参数 search_value,则只返回该值的键名。

php > $arr = array('Tom','Jack','football','Jack','football');

php > print_r (array_keys($arr));

Array

(

[0] => 0

[1] => 1

[2] => 2

[3] => 3

[4] => 4

)

php > print_r (array_keys($arr,'football'));

Array

(

[0] => 2

[1] => 4

)

in_array 检查数组中是否存在某个值

bool in_array ( mixed $needle , array $haystack [, bool $strict ] )

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

php > $arr = array('Tom','Jack','football');

php > echo in_array('Tom',$arr);

1 //1即表示true

array_merge 合并一个或多个数组

array array_merge ( array $array1 [, array $array2 [, array $... ]] )

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

php > $arr = array('name' => 'Tom','age' => 12,6 => 'red');

php > $arr2 = array('class' => 3, 6 => 'black');

php > print_r ( array_merge($arr,$arr2));

Array

(

[name] => Tom

[age] => 12

[0] => red

[class] => 3

[1] => black

)

array_unique 移除数组中重复的值

array array_unique ( array $array )

注意键名保留不变。

php > $arr = array('name' => 'Tom', 12,'name' => 'Jack','red','12');

php > var_dump(array_unique($arr));

array(3) {

["name"] => string(4) "Jack"

[0] => int(12)

[1] => string(3) "red"

}

count 计算数组中元素个数

int count( $array )

php > $arr = array('Tom','Jack','Lucy');

php > var_dump(count($arr));

int(3)

sort 数组排序

bool sort ( array &$array [, int $sort_flags ] )

此函数将为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。成功返回true,失败返回false。

$arr = array('Tom','Jack','Lucy');

sort($arr);

php > foreach($arr as $k => $v){ echo $k.' => '.$v."\n";}

0 => Jack

1 => Lucy

2 => Tom

Note: 对一些有混合类型的值的数组排序时要小心,sotr()会产生不可预知的效果。

我是一名php初学者,在学习的时候写了这些总结和大家分享,有不恰当的地方欢迎大家多多指正,我也会虚心的接受大家的建议,希望和大家共同进步。

php 重定义数组k,PHP基础篇之数组相关推荐

  1. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  2. Java基础篇--Java 数组

    Java基础篇--Java 数组 Java 数组 声明数组变量 创建数组 处理数组 For-Each 循环 数组作为函数的参数 数组作为函数的返回值 多维数组 多维数组的动态初始化(以二维数组为例) ...

  3. Java基础篇:数组

    一.数组基础知识: 1.什么是数组: 数组,就是一个容器,存放着同一种类型的数据的集合.数组的好处就是可以自动给数组中的元素从0开始编号,方便操作这些元素.数组属于引用变量,并且数组的长度是固定的,数 ...

  4. (基础篇)数组的详解与使用

    1.1 什么是数组 一个标量变量就是一个用来存储数值的命名区域.同样,一个数组就是一个用来存储一系列变量值的命名区域,因此,可以使用数组组织标量变量. 存储在数组中的值称为数组元素.每个数组元素有一个 ...

  5. 【算法与数据结构】在n个数中取第k大的数(基础篇)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 题目介绍           在n个数中取第k大的数(基础篇),之所以叫基础篇是因为还有很多更高级的算法,这些以 ...

  6. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  7. 菜鸟学习笔记:Java基础篇6(数组、字符串)

    菜鸟学习笔记:Java常用类(数组.字符串) 数组 概述 数组的定义 二维数组 数组查找和排序 查找 排序 数组运用--字符串 不可变字符序列(String) 可变字符序列(StringBuilder ...

  8. Kiner算法刷题记(二十一):字典树与双数组字典树(数据结构基础篇)

    字典树与双数组字典树(数据结构基础篇) 系列文章导引 系列文章导引 开源项目 本系列所有文章都将会收录到GitHub中统一收藏与管理,欢迎ISSUE和Star. GitHub传送门:Kiner算法算题 ...

  9. 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

    Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...

  10. java iterator如何知道数量_Java开发岗面试题基础篇(二)

    点击蓝字 关注wo们 老哥们,接上篇<Java开发岗面试题--基础篇(一)>,本期推出Java开发岗面试题--基础篇(二),来看看Java中的集合.多线程.异常体系等知识在面试中是怎么体现 ...

最新文章

  1. Python基础-模块
  2. 前端学习(1385):多人管理项目5抽离
  3. SpringBoot项目集成Mybatis Plus(四)SQL映射文件
  4. 北大教授证明黎曼猜想?但在前一天取消了
  5. 单片机课程设计:基于STM32智能交通灯的设计
  6. Keil5下载和安装教程
  7. Windows环境搭建Red5流媒体服务器指南
  8. Sigmoid 函数
  9. 晶体二极管的分类大全
  10. 如何测试计算机的运行速度,在计算机运行时如何检查互联网速度?您输入什么命令来运行计算机以测试您的互联网速度?...
  11. python获取上周一的日期
  12. Echarts数据可视化总结
  13. 【centos】安装wget------转发自【小姜dot】
  14. Java获取WiFi ssid_如何在Flutter中获取当前连接的wifi的wifi名称(SSID)
  15. 附录:入行 AI,选个脚踏实地的岗位
  16. 怎么删除计算机c盘应用,怎样删除电脑c盘中的垃圾
  17. android无法接收短信广播,Android BroadcastReceiver接收收到短信的广播
  18. ERP系统能给企业带来的那些好处
  19. 51单片机实例学习四 128X64 液晶显示器、PS/2与单片机通信、密码锁
  20. 时下人间道的生存法则

热门文章

  1. 20200724每日一句
  2. 3lcd和dlp怎么选,DLP和3LCD投影机的选择对比
  3. python 返回函数,偏函数,装饰器,itertools,collections,dir()type()
  4. unity找到特定一个物体的子物体,多个子物体有相同的名称
  5. Atitit 架构的艺术 目录 1. 按照技术站分类 1 1.1. LAMP架构,到IOE架构,再到分布式架构 1 1.2. Ssh ssm 1 2. Bs cs web hybrid架构 1 3.
  6. Atitit 提升开发效率的方法 提升语言级别 目录 1. 提升语言级别到4gl 1 1.1. 语言的代际关系 sql 》script 》java 1 1.2. 使用4gl dsl语言与api 1
  7. Atitit mybatis3 注解模式使用总结 目录 1. mybatisdemo 1 1.1. /ormMybatis3demo/src/db.properties 1 1.2. /ormMyb
  8. 目录 1. 管理的门槛 1 1.1. 资历作为一个年龄效应 1 1.2. 高层次知识结构的构建与提升 系统层面及战略层面的问题时 1 2. ,一类是绝对年龄效应,另一类是相对年龄效应。 1 2.1.
  9. Atitit 面向对象  封装的实现原理
  10. Atitit  java jsp 新的tag技术