[PHP从小白到大牛]-016 PHP数组简介

1.数组简介及分类

数组定义

  • 数组是PHP中的重要数组类型之一,是复合类型
  • 数据的集合,在PHP中数组是一个有序映射

数组分类

  • 索引数组php

    • 数组的下标是数字
    D:\php20190701\php_code\0807\array.php:10:
    array (size=3)
      0 => string 'first' (length=5)
      1 => string 'second' (length=6)
      2 => string 'third' (length=5)
    复制代码
  • 关联数组数组

    • 数组的下标为字符是关联数组
    D:\php20190701\php_code\0807\array.php:10:
    array (size=3)
      'one' => string 'first' (length=5)
      'two' => string 'second' (length=6)
      'three' => string 'third' (length=5)
    复制代码
  • 注意bash

    • PHP中数组实际上是不区分索引仍是关联数组,都是根据键名找到对应的键值

2.定义数组

经过array()形式

<?php


$arr = array(
	'one'=>'first',
	'two'=>'second',
	'three'=>'third'
);

var_dump($arr);
复制代码
  • array()空数组
<?php


$arr = array(); // 空数组
$arr1 = []; // 空数组
复制代码
  • array(值,...)下标连续的索引数组,下标从0开始
  • array(键名=>键值,...)指定下标的索引数组、关联数组、混合数组
<?php


$arr = array(
	'first'=>123,
	'second'=>'hello',
	'third'=>array(
		'hello',
		'world'
	),
	'forth'=>array(
		'one'=>'hello',
		'two'=>'world'
	)
); 
复制代码
  • 经过[]的形式定义数组,代替array()spa

  • 注意code

    • 检测是否为数组对象

      • var_dump()
      • gettype() // 返回array
      • is_array() // 返回true
    • 数组键名索引

      • 使用合法的数字字符串
      <?php
      
      
      $arr = [
      	1=>'first',
      	'1'=>'second' // 会覆盖
      ];
      
      var_dump($arr);
      复制代码
      • 浮点数会舍掉小数部分,取整做为键名
      <?php
      
      
      $arr = [
      	1.1=>'first',
      	2.2=>'second',
      	2.3=>'third', // 会把second覆盖掉
      ];
      
      var_dump($arr); 
      复制代码
      D:\php20190701\php_code\0807\array2.php:10:
      array (size=2)
        1 => string 'first' (length=5)
        2 => string 'second' (length=6)
      复制代码
      • 布尔true->1,false->0
      <?php
      
      
      $arr = [
      	true=>'first',
      	false=>'second'
      ];
      
      var_dump($arr);
      复制代码
      D:\php20190701\php_code\0807\array2.php:9:
      array (size=2)
        1 => string 'first' (length=5)
        0 => string 'second' (length=6)
      复制代码
      • null->空字符串
      <?php
      
      
      $arr = [
      	null=>'first', // 会转成空字符串
      	'1'=>'second' 
      ];
      
      var_dump($arr);
      
      var_dump($arr['']); // 能够使用空字符串来取值
      复制代码
      • 键名重复,后面的会覆盖以前的键值(value), 1和"1"是重复键(key)名
      • 若是没有指定键名,并且键名不都为负数,新添加的元素的键名为已有键名最大值加1
      <?php
      
      
      $arr = [
      	1=>'first', // 会转成空字符串
      	11=>'second',
      	'three'=>'third'
      ];
      
      
      $arr[] = "forth";
      
      var_dump($arr);
      复制代码
      • 若是键名都为负数,那么新添加的元素键名从0开始
      <?php
      
      
      $arr = [
      	-2=>'first', // 会转成空字符串
      	-11=>'second',
      	'three'=>'third'
      ];
      
      
      $arr[] = "forth";
      
      var_dump($arr);
      复制代码
      D:\php20190701\php_code\0807\array2.php:13:
      array (size=4)
        -2 => string 'first' (length=5)
        -11 => string 'second' (length=6)
        'three' => string 'third' (length=5)
        0 => string 'forth' (length=5)
      复制代码

经过[]动态建立

  • $数组名称[]=值
    • 下标连续的索引数组
<?php
    
$arr = [];
$arr[] = 'first';
$arr[] = 'second';
$arr[] = 'third';
$arr[] = 'forth';
$arr[] = 'fifth';
$arr[] = 'sixth';
$arr[] = 'seventh';

var_dump($arr);
复制代码
D:\php20190701\php_code\0807\array2.php:13:
array (size=7)
  0 => string 'first' (length=5)
  1 => string 'second' (length=6)
  2 => string 'third' (length=5)
  3 => string 'forth' (length=5)
  4 => string 'fifth' (length=5)
  5 => string 'sixth' (length=5)
  6 => string 'seventh' (length=7)
复制代码
  • $数组名称[键名]=值
    • 指定下标的索引数组和关联数组
<?php


$arr = [];
$arr['one'] = 'first';
$arr['two'] = 'second';
$arr['three'] = 'third';
$arr[] = 'forth';
$arr[] = 'fifth';
$arr[] = 'sixth';
$arr['seven'] = 'seventh';

var_dump($arr);
复制代码
D:\php20190701\php_code\0807\array2.php:13:
array (size=7)
  'one' => string 'first' (length=5)
  'two' => string 'second' (length=6)
  'three' => string 'third' (length=5)
  0 => string 'forth' (length=5)
  1 => string 'fifth' (length=5)
  2 => string 'sixth' (length=5)
  'seven' => string 'seventh' (length=7)
复制代码

经过range()和compact()快速建立

  • range()快速建立下标连续的索引数组
    • 第一个参数: 开始
    • 第二个参数: 结束
    • 第三个参数: 步长
    • 包含开始和结束
<?php
var_dump(range(1,10,1));
复制代码
D:\php20190701\php_code\0807\array2.php:5:
array (size=10)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5
  5 => int 6
  6 => int 7
  7 => int 8
  8 => int 9
  9 => int 10
复制代码
  • compact()快速建立关联数组, 参数为变量名(字符串)
<?php

$username = "zhangsan";
$age = 18;
$sex = 'male';


$userinfo = compact('username','age','sex');

var_dump($userinfo);
复制代码

经过define()定义常量数组

<?php

define('HELLO',['hello','world']);

var_dump(HELLO);

HELLO[0] = "!!!"; // 报错
复制代码

3.使用数组

原则

  • 根据键名找键值
  • 数组名称[键名]|数组名称{键名}
<?php

$arr = ['hello','world'];

echo $arr{0};
复制代码

4.其它类型转换成数组

临时转换

  • (array)$var

永久转换

  • settype(var,type)

注意

  • 标量类型转换成数组,只有一个元素,键名为0,键值为变量的值
  • null转换成数组是空数组, 不是[0=>null]
  • 不要把对象和资源转换成数组

5.数组运算符

+运算符

  • 合并数组,若是键名相同,使用前面数组的键值
<?php

$arr1 = [
	'hello','world'
];

$arr2 = [
	'hello','php'
];

var_dump($arr1+$arr2);
复制代码
D:\php20190701\php_code\0807\array_op.php:11:
array (size=2)
  0 => string 'hello' (length=5)
  1 => string 'world' (length=5)
复制代码

==

  • 只比较键名和键值是否相同,若是相同返回true,不然返回false
<?php

$arr1 = [
	0=>'1',
	1=>'world'
];

$arr2 = [
	"0"=>1,
	"1"=>'world'
];

var_dump($arr1 == $arr2); // true, 不比较顺序
复制代码

===

  • 既要比较键名和键值是否相同,还要比较类型和顺序
<?php

$arr1 = [
	0=>'1',
	1=>'world',
];

$arr2 = [
	"0"=>'1',
	"1"=>'world',
];

var_dump($arr1 === $arr2); // 下标, 值的类型, 顺序都必须同样
复制代码

!= <>

  • 至关于取反

!==

  • 至关于取反
相关文章
相关标签/搜索