主要内容:

  1. 简介
  2. 常用的方法
  3. 循环遍历数组
  4. PHP预定义数组
  5. 数组的处理函数

数组

PHP由于是弱类型的语言,他的变量类型是可以自由变换的,他的数组很自由,长度是可以动态增加的。

他的索引默认为数字0开始,另外有一个很强大的地方就是,他的数组可以和字典一样,通过(key-value)键值对模式来存储(厉害哦)

<?php
//声明数组,并初始化
$xiaoli=array("小李",25,"男","google公司","xiaoli@php.com");
//输出数组
print_r($xiaoli); echo "<br/>";
$xiaobai[2]="小白";
$xiaobai[]=20;
$xiaobai[]="女";
$xiaobai[]="baidu公司";
$xiaobai[]="xiaobai@php.com";
//输出数组
print_r($xiaobai); echo "<br/>";
$bai["姓名"]="小白";
$bai['年龄']=20;
$bai['性别']="女";
$bai['公司']="baidu公司";
$bai['邮箱']="xiaobai@php.com";
//输出数组
print_r($bai);
?>

输出

Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => google公司 [4] => xiaoli@php.com )
Array ( [2] => 小白 [3] => 20 [4] => 女 [5] => baidu公司 [6] => xiaobai@php.com )
Array ( [姓名] => 小白 [年龄] => 20 [性别] => 女 [公司] => baidu公司 [邮箱] => xiaobai@php.com )

使用数字作为key的叫做“索引数组”,使用其他作为key的叫做“关联数组”,可以使用array在初始的时候就是默认使用索引,也可以制定为关联数组。

<?php
//声明 索引数组,并初始化
$xiaoli=array("小李",25,"男","google公司","xiaoli@php.com");
//输出数组
print_r($xiaoli);
     echo "<br/>"; 
//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
//输出数组
print_r($xiaoli); ?>

输出

Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => google公司 [4] => xiaoli@php.com )
Array ( [姓名] => 小李 [年龄] => 25 [性别] => 男 [0] => google公司 [1] => xiaoli@php.com )

key也可以是变量,这样更灵活

<?php
//声明 索引数组,并初始化
$xiaoli=array("小李",25,"男","google公司","xiaoli@php.com");
//输出数组
print_r($xiaoli); echo "<br/>";
//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
//输出数组
print_r($xiaoli); $a="姓名";
echo "<br/>";
echo $xiaoli[$a];
$a="年龄";
echo "<br/>";
echo $xiaoli[$a]; ?>

输出

Array ( [0] => 小李 [1] => 25 [2] => 男 [3] => google公司 [4] => xiaoli@php.com )
Array ( [姓名] => 小李 [年龄] => 25 [性别] => 男 [0] => google公司 [1] => xiaoli@php.com )
小李
25

常用的方法

each($arr)返回数组中当前指针的键值对

print_r($arr)输出数组所有元素

var_dump($arr)输出数组的所有元素以及类型信息

list($a,$b)=array("小李",25,"男","google公司")这里一次性给多个变量赋值,$a="小李",$b=25;

循环遍历数组

这里有3中方法来遍历数字

  • for($i=0;$i<count($arr);$i++){}
  • foreach($arr as $x=>$y){}
  • while($v=each($arr)){}

foreach.php

<?php

	//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
foreach($xiaoli as $a=>$b){
//each($xiaoli);
echo "数组中 $a 元素是 $b <br/>";
} ?>

输出

数组中 姓名 元素是 小李
数组中 年龄 元素是 25
数组中 性别 元素是 男
数组中 0 元素是 google公司
数组中 1 元素是 xiaoli@php.com

貌似for循环只能遍历纯索引数组

for.php

<?php

	//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
for($i=0;$i<count($xiaoli);$i++){
//each($xiaoli);
echo "数组中 ".$i."元素是 ".$xiaoli[$i]." <br/>";
} ?>

输出

数组中 0元素是 google公司
数组中 1元素是 xiaoli@php.com Notice: Undefined offset: 2 in C:\xampp\htdocs\demo2.php on line 7
数组中 2元素是 Notice: Undefined offset: 3 in C:\xampp\htdocs\demo2.php on line 7
数组中 3元素是 Notice: Undefined offset: 4 in C:\xampp\htdocs\demo2.php on line 7
数组中 4元素是

while_each.php

<?php

	//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
while($v=each($xiaoli)){
echo "数组中 ".$v["key"]."元素是 ".$v["value"]." <br/>";
} ?>

输出

数组中 姓名元素是 小李
数组中 年龄元素是 25
数组中 性别元素是 男
数组中 0元素是 google公司
数组中 1元素是 xiaoli@php.com

PHP预定义数组

  • $GLOBALS(包含了全部变量的全局组合数组)
  • $_SERVER(头信息,路径,脚本位置等信息的数组)
  • $_POST
  • $_GET
  • $_COOKIE
  • $_SESSION
  • $_REQUEST(默认情况下包含了$_POST,$_GET,$_COOKIE的数组)

数组的处理函数

array_sum($arr)返回数组中所有value的值的和,字符串当做0

in_array($key,$arr)如果$key在$arr数组中,返回true,否则返回false

array_count_values($arr)用来统计所有值出现的次数

array_sum.php

<?php

	//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
$a=array_sum($xiaoli);
echo $a; ?>

输出

=>25

in_array.php

<?php

	//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","年龄"=>25,"性别"=>"男","google公司","xiaoli@php.com");
findkey("小李",$xiaoli);
echo "<br/>";
findkey("小小",$xiaoli); //在数组xiaoli中找key
function findkey($key,$xiaoli){
if(in_array($key,$xiaoli)){
echo "fund ".$key;
}else{
echo "not fund ".$key;
}
} ?>

输出

fund 小李
not fund 小小

array_count_values.php

<?php

	//声明 关联数组,并初始化
$xiaoli=array("姓名"=>"小李","姓名1"=>"小李","姓名2"=>"小李","姓名3"=>"小李",
"年龄"=>25,25,25,25,25,666,1,666,666,
"性别"=>"男","google公司","xiaoli@php.com");
print_r(array_count_values($xiaoli)); ?>

输出

Array ( [小李] => 4 [25] => 5 [666] => 3 [1] => 1 [男] => 1 [google公司] => 1 [xiaoli@php.com] => 1 )

ok数组的学习就到这里。

PHP学习3——数组的更多相关文章

  1. PHP学习之中数组-遍历一维数组【2】

    在PHP学习之中数组[1]中学会怎么创建一个数组,如果PHP学习之中数组[1]中的元素多的话,我们访问元素又是一个问题了,下面我们就使用for语句while,foreach来遍历我们的数组: < ...

  2. Python学习之数组类型一:

    Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建:  向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...

  3. [ 转载 ] Java基础12--基础学习总结——数组

    java基础学习总结——数组 一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量. 数组的 ...

  4. Numpy学习之——数组创建

    Numpy学习之--数组创建 过程展示 import numpy as np a = np.array([2,3,9]) a array([2, 3, 9]) a.dtype dtype('int32 ...

  5. [jQuery学习系列二 ]2-JQuery学习二-数组操作

    前言 上一篇内容 已经对于Jquery 有了一些认识, 包括Jquery的选择器和DOM对象, 那么这一篇继续来看下Jquery中很实用的Jquery对于数组的操作. Jquery中对数组的操作大致有 ...

  6. Java菜鸟学习笔记--数组篇(三):二维数组

    定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...

  7. Java SE学习之数组——匿名数组和不规则数组

    本文是学习网络上的文章时的总结以及自己的一点实践.感谢大家无私的分享. 近期偶然遇到了数组的问题,学习了匿名数组和不规则数组. 匿名数组适用于仅仅使用一次的情况:不规则数组适用是每行数据总数不确定的情 ...

  8. Scala学习(三)----数组相关操作

    数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...

  9. go语言学习(一):数组/切片

    学习区块链之后,发现还要学习加密,接触到的视频是:Go的crypto包,所以开始接触Go.因为和solidity有些相似,但是比solidity简单一些,就开始放松的心态去学习.每天翻着go菜鸟教程, ...

随机推荐

  1. 【OCP-12c】CUUG最新考试原题整理及答案(071-9)

    9.(5-5) choose the best answerView the Exhibit and examine the structure of the SALES and STORES tab ...

  2. JQuery的基本用法总结

    1.jquery概念 是js的一个类库    (对js中某些功能的封装) 用jq实现的功能一定能用js实现 反过来 不一定  ,js实现的功能jq不一定能实现 2.jquery好处 1.代码简洁 2. ...

  3. [Flex] 组件Tree系列 —— 运用openItems获取打开节点

    mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述:运用openItems获取打开节点 ...

  4. codis__通用的使用模式

    1,按功能模块分成不同的productName 参照 sample_user, sample_dynamic (见附件) sample_user.tar.gz,sample_dynamic.tar.g ...

  5. 快速上手日期插件laydate

    1.laydate 这款插件有独立版的,也有作为layui模块的,两种使用方式差不多,就引入有区别而已 <!--这是作为模块使用--><!DOCTYPE html> <h ...

  6. Linux一些常用的基础命令,总结的很好,收藏了

    原文地址:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html

  7. 一个python 服务器程序性能分析

    该服务器为bono,启动11个进程. 1.设置cprofile 在启动服务的总入口设置cprofile if __name__=="__main__": import cProfi ...

  8. JAVA static深入了解

    static关键字: 1)static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享:2)只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的 ...

  9. vue-devtools 必备开发工具

    转载自:http://blog.csdn.net/sinat_17775997/article/details/70224280 最近在研究vue单页面应用,一步一步用上全家桶,开发避免不了的就是调试 ...

  10. Unity 行为树-中断机制

    一.中断类型 设置了中断之后,行为树会检测执行过的子条件节点,当条件节点的状态发生变化时,会中断正在执行的Running节点,转而立即执行该条件节点. 行为树的打断类型有4种: None Self L ...