1、数组创建

索引数组:数组下标是数字

//自动分配:
$cars=array("Volvo","BMW","SAAB");
//手动分配1:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
//手动分配2(与1等价):
$cars[]="Volvo";
$cars[]="BMW";
$cars[]="SAAB";

关联数组:数组下标是字符串

//自动分配:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
//手动分配:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
echo "Peter is " . $age['Peter'] . " years old.";

多维数组

多维数组是数组的嵌套,即数组中又包含数组

二维数组例子;

<?php
$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);
echo $cars[0][0].": 库存:".$cars[0][1].", 销量:".$cars[0][2].".<br>";
echo $cars[1][0].": 库存:".$cars[1][1].", 销量:".$cars[1][2].".<br>";
echo $cars[2][0].": 库存:".$cars[2][1].", 销量:".$cars[2][2].".<br>";
echo $cars[3][0].": 库存:".$cars[3][1].", 销量:".$cars[3][2].".<br>";
?>

可以在 for 循环中使用另一个 for 循环,来获得 $cars 数组中的元素(仍需使用两个索引):

2、数组遍历

for()循环(略)
foreach循环
语法:

foreach ($array as $value) {code to be executed;
}

例子:

索引数组:

$colors = array("red","green","blue","yellow");
foreach ($colors as $value) {echo "$value <br>";
}

关联数组:

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

list,each,while遍历(list看不到字符串下标的值)

list的作用:list — 把数组中的值赋给一组变量

list() 仅能用于数字索引的数组,并假定数字索引从 0 开始

each — 返回数组中当前的键/值对并将数组指针向前移动一步

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。(看手册)

$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {echo "$key => $valn";
}

使用数组的内部指针控制函数遍历数组
key()获取当前数组指针所在键值,

current()获取当前数组指针所在元素值,

next()获取当前数组指针下一个元素值并将指针下移一位,

prev()获取当前数组指针上一个元素值并将指针上移一位,

end()获取当前数组最后一个元素值并将指针移到最后,

reset()获取当前数组第一个一个元素值并将指针移到第一位

3、获得数组的长度:count($arr)

4、数组排序

sort(arr)−按值把数组值进行排序,升序,不保留keyrsort(arr)−按值把数组值进行排序,升序,不保留keyrsort(arr) - 按值把数组值进行排序,降序,不保留key
asort(arr)−按值把数组值进行排序,升序,保留keyarsort(arr)−按值把数组值进行排序,升序,保留keyarsort(arr) - 按值把数组值进行排序,降序,保留key
ksort(arr)−按键把数组值进行排序,升序,保留keykrsort(arr)−按键把数组值进行排序,升序,保留keykrsort(arr) - 按键把数组值进行排序,降序,保留key
natsort();-自然排序,用于有字符串数组
natcasesort();-忽略大小写的自然排序,用于有字符串数组
array_multisort();-用一个数组对另外一个数组进行排序

5、array_map();将回调函数作用到给定数组的单元上

6、键值操作

获取数组中的值
array_values();返回含所有值的索引数组
获取数组中的键
array_keys();返回数组中部分的或所有的键名
array array_keys ( array array[,mixedarray[,mixedsearch_value = null [, bool strict=false]])检查一个值是否在数组中inarray();boolinarray(mixedstrict=false]])检查一个值是否在数组中inarray();boolinarray(mixedneedle , array haystack[,boolhaystack[,boolstrict = FALSE ] )
检查一个键是否在数组中
array_key_exists();
键和值对调
array_flip();
数组中的值反转
array_reverse();
删除数组中重复值
array_unique();
统计数组中值出现的次数
array_count_values();(限于元素为字符串或整型的数组)
自己实现

function acv($arr){foreach($arr as $val){if(!isset($arr2[$val]))$arr2[$val]=0;$arr2[$val]++;}return $arr2;
}

数组值过滤

array_filter();

自己实现(还没有实现回调函数):

function af($arr){foreach($arr as $k=>$v)if(empty($v))unset($arr[$k]);return $arr;
}

7、拆分、合并、分解与结合函数

array_slice(arr,arr,index,length);返回截取的一段值,原数组不变arraysplice(length);返回截取的一段值,原数组不变arraysplice(arr,index,index,length);返回截取的一段值,改变原数组
array_combine(arr1,arr1,arr2);合并,前一个是key,后一个是value
array_merge(); 并集;合并,键值相同,后面覆盖前面
implode();/join() 把数组连接成字符串
str=implode(str=implode(arr,'-');
explode();把字符串分解成数组
str=′2016−06−27′;str=′2016−06−27′;arr=explode('-',$str);

8、插入删除函数

array_pop();从最后弹出一个值,返回弹出值
array_push();从最后压入一个值,返回数组个数
array_shift();从前面弹出一个值,返回移出值,原数组下标重排
array_shift(arr);不考虑返回值,等价于arraysplice(arr);不考虑返回值,等价于arraysplice(arr,0,1);
array_unshift();从前面插入一个值,返回数组个数
array_unshift(arr,arr,v);不考虑返回值,等价于arr=arraymerge(array(arr=arraymerge(array(v),$arr);

9、其他常用函数

array_rand();随机取一个key
shuffle();打乱数组
array_sum();数组所有值的和
array_product(arr)求数组乘积arrayrange(mixedarr)求数组乘积arrayrange(mixedstart , mixed end[,end[,step = 1 ] )获取一个范围内数组
小应用

//生成随机验证码
$arr=range(0,9);
$arr2=range('a','z');
$arr3=range('A','Z');
$arr4=array_merge($arr,$arr2,$arr3);
shuffle($arr4);
$arr5=array_slice($arr4,0,4);
$str=join($arr5,'');
echo $str;

10、超全局数组

1)SERVER查看服务器信息2)SERVER查看服务器信息2)_GET 地址中参数
localhost/index.php?id=10&name=user1&age=20&sex=nan
echo "<pre>";
print_r(GET);echo"</pre>";可用于超链接传值、表单传值3)GET);echo"</pre>";可用于超链接传值、表单传值3)_POST 表单提交的值
4)REQUESTREQUEST_GET和POST全接收速度慢,不推荐使用5)POST全接收速度慢,不推荐使用5)_FILES 文件上传
6)COOKIE跟踪用户状态7)COOKIE跟踪用户状态7)_SESSION 保存会话信息
8)$GLOBALS 获取所有全局变量和超全局变量

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要

PHP进阶架构师>>>视频、面试文档免费获取​shimo.im

或 者关注咱们下面的知乎专栏

PHP大神进阶​zhuanlan.zhihu.com

@value 数组_深入PHP数组相关推荐

  1. C# 传递数组参数_一维数组_二维数组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 创建数组_如何创建数组

    js数组 js的数组不是典型的数组 典型的数组 元素的数据类型相同 使用连续的内存储存 通过数字下标获取元素 但是js的数组不这样 元素的数据类型可以不同 内存不一定连续的(对象是随机储存的) 不可以 ...

  3. c++ 构造函数数组_从 JS 数组操作到 V8 array.js

    前言 最近在写面试编程题,经常用到数组,经常想偷个懒,用它提供的方法,奈何还是对数组方法使用不熟练,导致写了很多的垃圾代码,很多地方稍加修改的话肯定变得简洁高效优雅? 所以✍这篇文章本着了解一下Jav ...

  4. 研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...

    #---------------------------------指针-----------------------------------# #include <iostream> i ...

  5. 无法创建t的通用数组_创建通用数组的问题

    无法创建t的通用数组 在这篇文章中,我们将介绍一篇全面的文章,其中介绍了创建通用数组的问题. Java编程语言于2004年9月在Java 5.0" Tiger"发行版中添加了泛型. ...

  6. c++ 二维数组_二维数组的声明2019_04_18

    -------------[感谢小郡提供的图片] [广告位招租] ---------------------------------------------------------------- -- ...

  7. echart data放入数组_线性表(数组、链表、队列、栈)详细总结

    线性表是一种十分基础且重要的数据结构,它主要包括以下内容: 数组 链表 队列 栈 接下来,我将对这四种数据结构做一个详细的总结,其中对链表实现了十几种常见的操作.希望对你有所帮助. 1.数组 数组(A ...

  8. c++如何输入数组_工作表数组计算之一:行列数相同的数组间运算

    大家好,今天我们继续讲解VBA数组与字典解决方案的第12讲,从这讲开始我们开始讲数组的运算了.通过之前的讲解,我了解了数组的定义,数组的性质,一些重要的知识点我们再回顾一下: a) 在数组的录入时需要 ...

  9. python初始化一个二维数组_二维数组初始化

    对于一个M行N列的二维数组,可以看成是M行一维数组,一维数组是N列.例如 int array[3][2]; 是一个3行2列的二维数组,其实,如同3个一维数组,一维数组是2列.那么,对3行2列的二维数组 ...

  10. 数组_二维数组的初始化方式

    数组的初始化方式总共有三种:静态初始化.动态初始化.默认初始化. [1]静态初始化 除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值. eg: int[][] a ...

最新文章

  1. 工业用微型计算机(15)-指令系统(10)
  2. html div阴影向上,css3阴影向上缓动样式
  3. 廖雪峰说python_廖雪峰官网Python部分的疑问及解决
  4. HTML label标签学习笔记
  5. python输入两个正整数m和n用for循环求其最大公约数_输入两个正整数,m和n,求其最大公约数和最小公倍数。...
  6. 运行 java classnotfound_JAR运行出现ClassNotFoundException异常的解决办法
  7. html基础元素案例笔记(1)
  8. 如何延长作用域链_第4部分2:作用域(链)和 闭包
  9. 存储过程与函数oracle
  10. PyTorch学习—12.损失函数
  11. scala case class与class区别
  12. 不同的核函数对支持向量机分类性能的影响
  13. ArcGIS中高风险地区热力图制作
  14. efl是什么意思_efl是什么意思
  15. 计算机中的标准差是哪个英语单词,标准差是什么意思
  16. 巢湖学院对口高考成绩查询入口2021,巢湖学院
  17. 基于RT-Thread的两轮平衡小车设计
  18. 熔断器 java_SpringCloud之熔断器使用(Hystrix)
  19. CSS 单行/多行文本溢出显示省略号(...)的实现
  20. 顺丰新财报:迎来上市来最好Q4业绩,强大修复能力下的新长跑

热门文章

  1. 概率: 飞机座位问题
  2. 【前端】echarts折线图中画水平参考线辅助线
  3. python线上培训考级
  4. 程序员中秋佳节的庆祝
  5. DataPipeline携手兆芯进一步完善基础软硬件生态
  6. 易语言静态编译链接器大全(为EIDE助手准备滴)
  7. 星座和生肖查询小小代码(超级简单的初学者选择结构代码)
  8. HTML作业制作服装推广软文,服装推广软文怎么写?有什么技巧?
  9. 启动计算机引导windows10,技术详解win10电脑启动界面提示windows boot manager的详尽处理举措...
  10. 金庸群侠传3DUnity重置入门-Mods开发