首页 > 编程语言 > 详细

03、PHP数组

时间:2020-12-18 14:38:16      阅读:23      评论:0      收藏:0      [点我收藏+]

数组定义

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

数组分类

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

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

注:php中数组其实是不区分索引还是关联数组,都是根据键名找键值。

数组定义

一、通过 array() 形式创建

$arr = array();

$arr1 = array(1,‘dkf‘,45); //索引数组

$arr2 = array(‘first‘ => ‘first_value‘ , 4 => ‘secend_value‘); //关联数组 + 索引 = 混合

 

二、通过 [ ] 形式创建

$arr = [];
$arr[] = ‘haha‘;
$arr[] = 234;
$arr[‘haha‘] = ‘haha‘;
$arr1 = [‘asd‘,‘df‘,34]; //索引数组 $arr2 = [ ‘user‘ => ‘zhang‘, ‘haha‘ => ‘haha‘ ];

 

三、通过 range() 和 compact() 创建

range()  //快速创建索引数组
$arr = range(3,13); //创建数组,值从3开始,一直到13结束
$arr1 = range(3,13,2); //第三个参数是步长,原来每次加1,现在每次加2
$arr2 = range(‘a‘,‘z‘);

compact() //快速将变量转换为数组,针对已有变量
$username = ‘zhang‘;
$email = ‘234@163.com‘;
$age = 18;
$arr = compact(‘username‘,‘email‘,‘age‘); //字符串里面为变量名

 

四、通过 define() 定义常量数组

const定义数组
const ARR = array(1,23,4);
const ARR2 = [1,2,3];

define定义数组
define(‘ARR3‘ , [2,3,4,5]);
define(‘ARR4‘ , array(2,3,4));

 

检测是否为数组

var_dump($arr); //返回类型及数据

echo gettype($arr); //返回类型名称

var_dump(is_array($arr));//返回boolean

 

二维数组

//数组里面包含数组就是二维数组。数组+数组+数组 = 三维数组 ......

$arr = array(   //索引包索引
   array(1,2,3),
   array(4,5,6)  
);
$arr1 = array(   //索引包关联
   array(‘name‘ = ‘haha‘,‘age‘ = 18), 
   array(‘name‘ = ‘haha‘,‘age‘ = 18)
);
$arr2 = array(   //关联包索引
    ‘users‘ => array(1,2,3),
    ‘ages‘ => array(4,5,6)
);
$arr3 = array(   //关联包关联
    ‘users‘ => array(‘username‘ => ‘haha‘),
    ‘ages‘ => array(‘age‘ => 15)
);

//同样可以用 [] 来创建

 

数组增删改查

$arr = [2,3,4,2,4];
echo $arr[2]; //数组下标为2的值

$arr1 = [‘name‘ => ‘haha‘ , ‘age‘ => 18];
echo $arr1[‘name‘]; //输出数组索引为name的值

$arr2 = [12 , [‘name‘=>‘qiu‘ , ‘age‘=>18]]
echo $arr2[1][‘name‘];
echo $arr2[1]{‘name‘}; //可以使用花括号,效果一样

$arr = [1,2];
$arr[] = 3;
$arr[‘name‘] = ‘qiu‘;

$arr = [1,2,2,2];
$arr[0] = 2;

$arr = [1,2,3,4,‘name‘=>‘qiu‘];
unset($arr[‘name‘]);
unset($arr[0]);

 

数组运算符

+    //合并数组

$arr1 = [1,2];
$arr2 = [3,4];
$new_arr= $arr1 + $arr2; //若索引相同,只回采用+号左边的,并不会覆盖。所以结果还是 [1,2]

$arr3 = $arr1 +[‘name‘=>‘haha‘,‘age‘=>19]; //这样就会合并起来

 

==   //判断数组是否相同,顺序可以错乱,还会进行类型转换

$a = [‘45‘ => 234];
$b = [45 => ‘234‘];
var_dump($a == $b); //true

 

===   //判断数组是否相同,顺序要相同,类型也必须相同

$a = [‘45‘ => 234];
$b = [45 => ‘234‘];
var_dump($a == $b); //false

!=  是  ==  的取反

!==  是  ===  的取反

 

其他类型转换为数组

//临时转换
$a = 123;
$arr1 = (array)$a; 

$b = ‘haha‘;
$arr2 = (array)$b;

$c = null;
$arr3 = (array)$arr3; //这里会转为空数组

//永久转换
settype($a , ‘array‘);
settype($b , ‘‘array);
settype($c , ‘array‘); //这里也是空数组,转换规则跟临时转换一样

 

 

计算数组的个数

count  //数组个数

$arr = [1,2,3,4];
echo count($arr);  //4

echo count(‘123‘); //若传的是字符串,返回的是1
echo count(null);  //若传的是null,返回的是0

 

 

foreach遍历数组

foreach只能遍历数组或对象,否则会报错

foreach遍历一维数组

$arr = [1,2,3,4,5,6];

foreach($arr as $v){
  echo $y;  //这里遍历出的是键值  
}

foreach($arr as $k => $v){
  echo $k,$v;  //这里输出的是键名 和 键值  
}

 

foreach遍历二维数组

$arr = [[1,2,3] , [,4,5,6]];

foreach($arr as $v){
  foreach($v as $val){
     echo $val; 
  }  
}

 

可以通过 : 和 endforeach 代替 { }

$arr = [1,2,3,4];

foreach($arr as $v):
    echo $v;
endforeach;

 

 

数组指针相关函数

//数组默认指针,指向第一个元素

key($arr)  //得到当前指针所在的键名,没有则返回 null
current($arr)  //得到当前指针所在的键值,没有则返回false

next($arr)  //指针往下移动一位,并得到该位置的值,没有则返回false
prev($arr)  //指针往上移动一位,并得到该位置的值,没有则返回false

reset($arr) //指针移动到数组开始,并返回当前位置的值,没有则返回false
end($arr) //指针移动到数组末尾,并返回当前位置的值,没有则返回false

 

 

指针函数遍历数组

$arr = [
   ‘‘ => ‘a‘,
   ‘a‘=>‘b‘, 
   null=>‘c‘
];

//根据key来遍历数组
while(!is_null($arr)){
  echo ‘当前键名‘.key($arr).‘  当前键值‘.current($arr);
  next($arr);  //将指针往后移动一位
}

//不能根据current来遍历,因为当键值存在0或false之类就会退出循环

//实用场景,获取文件扩展名
$file_name = ‘haha.php‘;
$res = explode(‘.‘ , $file_name);
$ext = end($res);

 

 

list函数

list  //把数组中的值赋给一些变量

$arr = [1,2,3];

list(,$b,) = $arr; //这样 $b 就得到了2

list($a,,$c) = $arr;  //这样 $a,$c 就得到了1,3

echo $a,$b,$c;

//实用场景
$arr = [ [1,2,3],[4,5,6],[7,8,9] ];
foreach($arr as list($a,$b,$c)){
  echo $a,$b,$c; 
}

 

each函数(即将弃用)

each  //返回数组当前指针的键值对数组,并将数组指针往前移动一步
//键值对数组:0为键,1为值,key为键,value为值。 一共4项

$arr = [1,2,3];
print_r(each($arr)); //打印出第一项的数组

 

list和each遍历数组(即将弃用)

$arr = [1,2,3];

while(list($k,$v) = each($arr)){
  echo $k,$v;  
}

 

03、PHP数组

原文:https://www.cnblogs.com/mingliangge/p/13620455.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!