03.array

goer ... 2022-01-07 Php
  • Php
大约 5 分钟

数组方法

[toc]

# Arrary方法

索引数组和关联数组;

# 1. 创建数组

//索引数组
$arr = array('a','b','c');  //array()创建

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

//关联数组

$arr = [
    'aa'=>'11',
    'bb'=>'22',
    'cc'=>'33'
];

//添加值
$arr["dd"] = '44';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

range()帮助我们生成索引数组 ,前面说过了

$arr = range(10,20,2); //10 12 14
1

# 2.删除数组或元素

(注意:删除数组元素不会重建索引) uset()

$arr = range(1,6);

uset($arr[2]); //第二个数组元素的值永远也没有Array
    [0] => 1
    [1] => 2
    [3] => 4
    [4] => 5
    [5] => 6
uset($arr);  //删除数组
1
2
3
4
5
6
7
8
9

常用的打印数组的函数print_r() 和 var_dump()

// 获取数组长度  count()
print_r($arr);
echo count($arr);

//判断数组内是否保函改值  is_array()
var_dump(is_array('aa',$arr));   //false
1
2
3
4
5
6

# 3.数组和字符串转换

==重要==implode() explode() 函数把字符串打散为数组。

$arr1 = range(1,10);

//将  数组  --->  字符串 
$str1 = implode('|',$arr1);  // 参数1:分割字符串 
var_dump($str1);

//将 字符串   --->   数组
$arr2 = explode(',',$str);   // 参数1:字符串分隔符
print_r($arr2);
1
2
3
4
5
6
7
8
9

# 4.数组排序

对数组进行升序和降序

// sort() 升序 rsort() 降序   丢弃键 排序值 变成索引数组
$arr = [
    'one'=>'aa',
    'two'=>'bb',
    'three'=>'cc',
    'four'=>'dd'
];
sort($arr);
print_r($arr);   //变为索引数组
rsort($arr);
print_r($arr);

// ksort()  krsort()   不会丢弃键值  按照键排序
ksort($arr);
krsort($arr);    //还是关联数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 5.方法

  • ==重要==in_array()

判断元素是否在数组内

$arr = ['a','b','c'];
echo in_array('c',$arr);   //true
1
2
  • array_rand()

随机输出数组的一个和多个元素

// 参数1 数组
// 参数2 需要返回的值
$arr = range(1,10,2);
var_dump arrar_rand($arr,3);  // 一个数组
var_dump(array_rand($arr));   // 返回 键
1
2
3
4
5
  • array_merge() **

函数用于把一个或多个数组合并为一个数组。

// 参数就是要合并的数组

array_merge($arr,$arr2);  //重新排列数组
1
2
3
  • array_pad()

向一个数组插入带有指定值的指定数量的元素。

/**
 * 参数1: 指定数组 
 * 参数2: size  参数小于原始数组的长度 整数则填补到右侧,负数则填补到左侧
  * 参数3:填补的值
  */
$arr = [
    'a'=>'111',
    'b'=>'222',
    'c'=>'333'
];
array_pad($arr,-5,'ccc');  //在最开始添加 数组长度为5 值为 ccc
[0] => ccc
[1] => ccc
[one] => aa
[two] => bb
[three] => cc
array_pad($arr,6,'bb'); //数组右侧添加 数组长度为6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  • array_pop()

删除数组中的最后一个元素。

array_pop($arr);
//删出最后一个,返回的是最后一个的值
print_r($arr);
1
2
3
  • array_push()

向数组尾部插入一个或多个元素。

array_push($arr,'aa','bb');

array_push($arr,'cc');
1
2
3
  • array_slice()

根据条件截取数组,有返回的值

// 参数1 :数组
// 参数2:截取的开始位置  如果是负值从后数
// 参数3: 截取的数组长度
$arr2 = array_slice($arr,-2); //从倒数第二个截取到最后一个
$arr3 = array_slice($arr,2,2); //从第二个开始截取,截取2个
1
2
3
4
5
  • array_splice()

与array_slice()用法相似,没有返回值,删除他们

$arr4 = array_splice($arr,2,4); //从第二个开始,删除4个
1
  • array_reverse()

函数将原数组中的元素顺序翻转,创建新的数组并返回。

// 参数2 true 报持键名, false 键名丢弃
array_reverse($arr,tren);  //保持键值,反转数组
1
2
  • in_array() 和 array_search() 和 array_key_exists()

都是判断是否存在key在数组内

in_array($arr,'aa'); // true
array_search('bbb',$arr); //false
array_key_exists('key',$arr); //false
1
2
3
  • array_sum()

函数返回数组中所有值的总和

$arr1 = range(1,10);
var_dump(array_dum($arr1)); // 55
1
2
  • array_change_key_case()

数组的所有的键都转换为大写字母或小写字母。

$arr2 = [
    'a'=>'111',
    'bb'=>'222',
    'ccc'=>'333',
    'dddd'=>'4444',
];
 var_dump(array_change_key_case($arr6,1));
// 第二个参数是默认和0的就是小写  如果是其他的整数,就是大写
1
2
3
4
5
6
7
8
  • array_chunk()

一个数组分割为新的数组块。

// 参数1:使用的数组
// 参数2:size 规定每个新数组包含多少个元素。
// 参数3:true - 保留原始数组中的键名。false - 默认。每个结果数组使用从零开始的新数组索引。
$arr = range(1,20);
$arr2 = array_chunk($arr,5,true); // 保留键名  生成二维数组
1
2
3
4
5
  • array_combine()

合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值。

$arr = range(1,10); // 1,26 
$arr2 = range('a','z');
$arr3 = array_combine($arr,$arr2);  // 两个数组元素数量应该相等
1
2
3
  • array_count_value()

用于统计数组中所有值出现的次数.

// 本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

$a=array("Cat","Dog","Horse","Dog");
var_dump(array_count_values($a));
1
2
3
4
  • array_fill()

函数用给定的值填充数组

// 参数1: 必须 start 规定键的起始索引。
// 参数2: 必须 number 规定填充的数量。
// 参数3: 必须 start 规定要插入的值。
$arr = array_fill(3,2,"bb");

Array
(
    [3] => bb
    [4] => bb
)
1
2
3
4
5
6
7
8
9
10
  • array_diff()

返回第一个数组里面没有在第二个数组里面出现的值

$arr = ['a','b'];
$arr1 = ['c','a'];
array_diff($arr,$arr1); // ['b']
1
2
3
  • array_intersect()

返回两个数组相同的元素

array_intersect($arr,$arr1)  // [a]
1
  • array_unique()

数组去重 去掉重复的值

$arr = ['a','b','c','a'];
array_unique($arr);    // ['a','b','c']
1
2
  • array_keys()

将数组的键拿出来变成索引数组

$arr = [
	'a'=>'aa',
	'b'=>'bb'
];
$arr1 = array_keys($arr);
[
	0=>'a',
	1=>'b'
]
1
2
3
4
5
6
7
8
9

# 6.指针

指针 和数组

current()返回数组当前指针元素的值;

key()返回数组当前指针元素的索引

next() 组指针向前移动一
     //不存在返回false
prev() 指针往回移动一位

reset() 将指针指向第一个元素
 
end() 将数组指针指向最后一个元素

var_dump(current($arr)); //当前数组的第一个元素的值
var_dump(key($arr)); //当前数组的第一个元素的键 
1
2
3
4
5
6
7
8
9
10
11
12
13
14