PHP数组基本用法与知识点总结

本文实例讲述了PHP数组基本用法与知识点。分享给大家供大家参考,具体如下:

初识数组

  • 概念: 数组就是一个可以存储一组或一系列数值的变量
  • 数组组成: 数组是由一个或多个数组元素组成的
  • 数组元素: 一每个数组由键(Key)和值(Value)构成
  • 键: "键"为元素的是被名称,也被称为数组下标
  • 值: “值”为元素的内容
  • 映射:“键”和“值”之间存在一种对应关系,称之为映射
  • 类型划分: 根据键的数据类型,可以将数组划分为索引数组和关联数组,前者使用数字作为键,后者使用字符串作为键。

1. 索引数组

索引数组: 指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要适用于利用位置来标识数组元素的情况。另外,索引数组的键名也可以自己指定

2.关联数组

关联数组: 指键名为字符串的数组。通常情况下,关联数组元素的“键”和“值”之间有一定的义务逻辑关系。因此,通常使用关联数组储存一系列具有逻辑关系的变量。关联数组的“键”都是字符串,并与“值”之间具有意义对应的关系

数组的基本使用

1. 创建数组的方式

  • 使用array()函数 创建数组
  • 赋值方式
  • 短数组定义法(php5.4增加的)

1.数组的创建——array()语言结构方式

array()语言结构中的数组元素使用“键=>值”的方式进行表示,各元素之间使用逗号进行分割。

//定义索引数组
$fruits = array('apple', 'grape', 'pear'); // 省 略键名
$sports = array(2 => 'basketball', 4 => 'swimming'); // 指定键名

数组在省略键名的设置时,默认从0开始,依此递增加1,因此该数组元素的键名依次为“0、1、2”。
除此之外,还可以根据实际需求自定义数组元素的键名,如上述示例中的$sports数组变量,将其第1个元素键名设置为2,第2个元素的键名设置为4

2. 数组的定义——array()语言结构方式

//定义关联数组
$info = array('id' => 10, 'name' => 'Tom', 'tel' => 18810888188);

在定义关联数组时 “键”则有明确的数据类型要求,具体如下。

  • 键只能是整型或字符串型的数据,如果是其他类型,则会执行类型自动转换
  • 合法整型的字符串会被转为整型,如“2”转为2,而“02”则不会被转换
  • 浮点数会被舍去小数部分直接转换成整型,如“2.6”转为2
  • 布尔类型的true会被转为1,false转为0
  • NULL类型会被转为空字符串
  • 若数组中存在相同键名的元素时,后面的元素会覆盖前面元素的值

在定义数组时,还可以定义没有任何元素的数组,以及既有索引表示方式、又有关联表示方式的数组元素。

//定义混合数组
$temp = array();
$mixed = array(2, 'str', 'id' => 5, 5 => 'b', 'a');
  • $mixed数组的元素“b”指定了数字键名为“5”
  • “b”元素后的“a”元素会自动将前面最大的数字键名加1后,作为其键名,即5+1得到键名6。
//定义多维数组
$data = array(
 0 => array('name' => 'Tom', 'gender' => '男'),
 1 => array('name' => 'Lucy', 'gender' => '女'),
 2 => array('name' => 'Jimmy', 'gender' => '男')
);

3. 数组的定义——赋值方式

使用赋值方式定义数组,实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值。

//赋值方式
$arr[] = 123;  // 存储结果:$arr[0] = 123
$arr[] = 'hello';  // 存储结果:$arr[1] = 'hello'
$arr[4] = 'PHP';  // 存储结果:$arr[4] = 'PHP'
$arr['name'] = 'Tom'; // 存储结果: $arr['name'] = 'Tom'
$arr[] = 'Java';  // 存储结果:$arr[5] = 'Java'

赋值方式定义数组就是单独为数组元素赋值。需要注意的是,赋值方式不能定义一个空数组。

4. 数组的定义——短数组定义法

短数组定义法([])与array()语法结构相同,只需将array()替换为[]即可

//短数组定义法
 // 相当于:array('wind', 'fine')
$weather = ['wind', 'fine'];
// 相当于:array('id' => 12, 'name' => 'PHP')
$object = ['id' => 12, 'name' => 'PHP'];
// 相当于:array(array(1, 3), array(2, 4))
$num = [[1, 3], [2, 4]];

2.访问数组

数组定义完成后,若想要查看数组中某个具体的元素,则可以通过“数组名[键]”的方式获取。

```
//数组名[键]
$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
echo $sub[1]; // 输出结果:Java
echo $sub[3]; // 输出结果:Android
echo $data['goods']; // 输出结果:clothes
echo $data['sales']; // 输出结果:500
```

若要一次查看数组中的所有元素,则可以利用前面学习过的输出语句函数print_r()和var_dump(),并且通常情况下为了使输出的函数按照一定的格式打印,查看时经常与pre标记一起使用。

3.遍历数组

所谓遍历数组就是一次访问数组中所有元素的操作。通常情况下,使用foreach()语句完成数组的遍历。

//方式一
foreach (数组名称 as 键 => 值) {
  // 处理语句
}
//方式二
foreach (数组名称 as 值) {
  // 处理语句
}

“键”和“值”的变量名可以根据实际情况随意设置

4.数组的删除

在数组定义完成后,有时也需要根据实际情况去除数组的某个元素。

5.数组操作符

不仅前面讲解的标量数据类型可以进行比较运算,数组这种复合数据类型也可以进行运算,不过数组有其专门提供的数组操作符进行对应的运算。

“+”为联合运算符,用于合并数组,如果出现下标相同的元素,则保留第1个数组内的元素。

$num = [2, 4];
$alp = ['a', 'b', 'c'];
$mer1 = $num + $alp;
$mer2 = $alp + $num;
print_r($mer1); // 输出结果:Array ( [0] => 2 [1] => 4 [2] => c )
print_r($mer2); //

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》及《PHP数学运算技巧总结》

希望本文所述对大家PHP程序设计有所帮助。

时间: 2020-05-31

PHP 数组操作详解【遍历、指针、函数等】

本文实例总结了PHP 数组操作.分享给大家供大家参考,具体如下: 数组 数据由元素组成,元素由键和值组成 数组分类 关联数组 关联数组,元素的下标与元素的值存在逻辑上的关系,称之为关联数组.指的是,键和值之间存在管理. $a1 = array('name' => '李寻欢', 'age' => 34); 索引数组 索引数组,元素的值和下标不存在逻辑关系,而下标只表示值索引位置. $a1 = array('李寻欢',34); 数组遍历 所要的完成遍历数组,需要依次得到每个元素的信息(键的信息和值

PHP数组对象与Json转换操作实例分析

本文实例讲述了PHP数组对象与Json转换操作.分享给大家供大家参考,具体如下: 代码 <?php //数组转对象 function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=>$v){ if( gettype($v)=='array' || getType($v)=='object' ) $e[$k]=(object)arrayToObject($v); } return (object)$e

php数组函数array_push()、array_pop()及array_shift()简单用法示例

本文实例讲述了php数组函数array_push().array_pop()及array_shift()简单用法.分享给大家供大家参考,具体如下: <?php /** * array_push()将一个或多个单元压入数组的末尾(入栈) */ $stack = array("Java", "Php", "C++"); array_push($stack, "C#", "Ruby", array('jsp

PHP查找一列有序数组是否包含某值的方法

问题:对于一列有序数组,如何判断给出的一个值,该值是否存在于数组. 思路:判断是否存在,最简单是,直接循环该数组,对每一个值进行比较.但是对于有序数组来说,这样写就完全没有利用好"有序"这一特点. 所有我们使用到"二分法查找", //有序数组为 $arr = array(2,5,66,87,954,1452,5865); //查找值 $str = 1452; //我们先定义 三个参数 $front = 0;//一个开始值下标 $end = count($arr) -

如何在PHP中使用数组

1.PHP如何获取数组里元素的个数实例 在 PHP 中,使用 count()函数对数组中的元素个数进行统计. 例如,使用 count()函数统计数组元素的个数,示例代码如下: <?php header("Content-Type:text/html; charset=utf-8"); $arr = array("php","thinkphp","laravel"); echo count($arr); 输出结果为: 3

php数组指针函数功能及用法示例

本文实例讲述了php数组指针函数功能及用法.分享给大家供大家参考,具体如下: 数组指针函数有reset(),prev(),current(),next(),end(),key(),each() 其中reset(),prev(),current(),next(),end(),都是只与数组的值有关的函数,key()只与数组键,有关的函数,each()可以获得数组的值和键 reset()函数,参数是一个数组,引用传值,将一个数组的内部指针重置到首位,也就是数组的第一个元素所在的位置,然后返回第一个元素

PHP实现提取多维数组指定一列的方法总结

本文实例讲述了PHP实现提取多维数组指定一列的方法.分享给大家供大家参考,具体如下: PHP中对多维数组特定列的提取,是个很常用的功能,正因为如此,PHP在5.5.0版本之后,添加了一个专用的函数array_column().当然,如果你的PHP版本低于5.5.0,就得用别的方法处理了. 例如,对于以下这个数组: $user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' =>

php实现快速对二维数组某一列进行组装的方法小结

本文实例总结了php实现快速对二维数组某一列进行组装的方法.分享给大家供大家参考,具体如下: 问题: 比如我二维数组是这样的: $user = array( '0'=> array('id'=>100,'username'=>'a1'), '1'=> array('id'=>101,'username'=>'a2'), '2'=> array('id'=>102,'username'=>'a3'), '3'=> array('id'=>10

PHP字符串与数组处理函数用法小结

本文实例讲述了PHP字符串与数组处理函数用法.分享给大家供大家参考,具体如下: 字符串处理函数 trim --去除字符串首尾的多余空白字符和其他字符 函数结构: string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] ) 第一个参数是咱要处理的字符串,第二个参数是要排除的字符(默认 \t\n\r\0\x0B) str_replace --更换子串 函数结构: mixed str_replace (

PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结

本文实例总结了PHP实现二维数组(或多维数组)转换成一维数组的常见方法.分享给大家供大家参考,具体如下: 假设有下面一个二维数组: $user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' => 101, 'username' => 'a2'), '2' => array('id' => 102, 'username' => 'a3'), '3' =&

Java List转换成String数组几种实现方式详解

Java List转换成String数组 实现代码: List<String> list = new ArrayList<String>(); list.add("a1"); list.add("a2"); String[] toBeStored = list.toArray(new String[list.size()]); for(String s : toBeStored) { System.out.println(s); } 或 Li

C#实现字符串转换成字节数组的简单实现方法

本文实例讲述了C#实现字符串转换成字节数组的简单实现方法.分享给大家供大家参考.具体实现方法如下: using System.Text; public static byte[] ConvertStringToByteArray(string stringToConvert) { return (new UnicodeEncoding()).GetBytes(stringToConvert); } 希望本文所述对大家的C#程序设计有所帮助.

C#将数字转换成字节数组的方法

本文实例讲述了C#将数字转换成字节数组的方法.分享给大家供大家参考.具体实现方法如下: 下面的代码用到了MemoryStream 和 BinaryWriter // Create a byte array from a decimal public static byte[] DecimalToByteArray (decimal src) { // Create a MemoryStream as a buffer to hold the binary data using (MemorySt

PHP中把对象数组转换成普通数组的方法

最近在用ThinkPHP开发一个京东服务市场的应用,然而京东服务市场接口返回的数据是个对象数组.然而需要一个个属性取出来放到数组里面然后再利用ThinkPHP的addAll或者add方法写入数据库.然而每次返回的字段有几十个,每次这么拼接都要崩溃了.果然还是那句话,当你感到无法忍受的时候你就会想办法改变.于是想了下,如果有个函数传个对象数组进去可以自动转成普通数组就好了.因而万能的互联网搜索又来了.百度了一通...果然有前辈已经处理过了,在此记录一下. 复制代码 代码如下: /** * [std

对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)

有时需要将数组转成伪数组(ArrayLike),如下 复制代码 代码如下: var ary = ['one','two','three']; var obj = {}; // 没有length属性 Array.prototype.push.apply(obj, ary); for(var i in obj){ alert(i + ': ' + obj[i]); } IE8/9/Firefox/Safari/Chrome 依次弹出了obj的key及其value.即能转换成ArrayLike. 但I

python-OpenCV 实现将数组转换成灰度图和彩图

主要步骤 1.生成普通python数组(bytearray(),os.urandom()) 2.转换成numpy数组(numpy.array()) 3.通过reshape将数组转换到所需的维数 4.以图像的形式显示出来(cv.imshow()) 代码 import os import cv2 as cv import numpy as np # Make an array of 120000 random bytes randomByteArray = bytearray(os.urandom(

浅谈java中的一维数组、二维数组、三维数组、多维数组

这个数组可以看做新手学习,从一维数组 到 多维 数组 循环渐进,其实看起也很简单,一看便知,众所周知,一维.二维或许经常用到,用到二维以上应该就很少了. public class test { public static void main(String[] args) { /*一维数组*/ int num[] = {0,1,2}; /*下面输出 3 行数据,0 ~ 2*/ for (int i = 0; i < num.length; i++) { System.out.println("

详解C++中的一维数组和二维数组

C++一维数组 定义一维数组 定义一维数组的一般格式为:     类型标识符  数组名[常量表达式]; 例如: int a[10]; 它表示数组名为a,此数组为整型,有10个元素. 关于一维数组的几点说明: 1) 数组名定名规则和变量名相同,遵循标识符定名规则. 2) 用方括号括起来的常量表达式表示下标值,如下面的写法是合法的: int a[10]; int a[2*5]; int a[n*2]; //假设前面已定义了n为常变量 3) 常量表达式的值表示元素的个数,即数组长度.例如,在"int

3个PHP多维数组转为一维数组的方法实例

很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:一.使用foreach 复制代码 代码如下: <?php   function arr_foreach ($arr)    {      static $tmp=array();        if (!is_array ($arr))       {         return false;      }      fo