首页 > 编程语言 > 详细

php第三天-数组的定义,数组的遍历,常规数组的操作

时间:2020-09-08 14:55:03      阅读:64      评论:0      收藏:0      [点我收藏+]

0x01 数组分类

在php中有两种数组:索引数组和关联数组
索引数组的索引值是整数,以0开始。当通过位置来标识东西时用索引数组。
关联数组是以字符串作为索引值,关联数组更像操作表。索引值为列名,用于访问列的数剧

0x02 数组定义

直接赋值的方式声明数组
使用array( )语言结构新建数组
使用[ ] 定义数组
多维数组的声明

2.1 直接赋值的方式声明数组
<?php
$array[0] = "hello";
$array[1] = "world";
echo "<pre>";
var_dump($array);
?>

输出

array(2) {
[0]=>
string(5) "hello"
[1]=>
string(5) "world"
}

<?php
$array[] = "hello";
$array[] = "world";
$array["test"] = "test";
$array[] = "yicunyiye";
echo "<pre>";
var_dump($array);
?>

输出

array(4) {
[0]=>
string(5) "hello"
[1]=>
string(5) "world"
["test"]=>
string(4) "test"
[2]=>
string(9) "yicunyiye"
}

2.2 使用array( )语言结构新建数组
<?php
$array = array("hello","world","test"=>"test","yicunyiye");
echo "<pre>";
var_dump($array);
?>

array(4) {
[0]=>
string(5) "hello"
[1]=>
string(5) "world"
["test"]=>
string(4) "test"
[2]=>
string(9) "yicunyiye"
}

2.3 下标变化情况
<?php
$array[] = "123";
$array[] = "456";
$array["99"] = "abc";
$array[] = "def";
echo "<pre>";
var_dump($array);
?>

array(4) {
[0]=>
string(3) "123"
[1]=>
string(3) "456"
[99]=>
string(3) "abc"
[100]=>
string(3) "def"
}

2.4 使用[ ]定义数组
<?php
$a = [10,20,30,40,50];

$b = [0=>10,1=>20,2=>30];

$c = ["name"=>"zhangsan","age"=>20];

echo "<pre>";
var_dump($a);
?>

array(5) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(30)
[3]=>
int(40)
[4]=>
int(50)
}

2.5 多维数组的声明
<?php
$array = ["one",
		  "two",
		  "test"=>"yicunyiye",
		  "hello",
		  [
		  	"hello",
		  	"world",
		  	[
		  		"hello",
		  		"world"
		  	]
		  ]
	];
echo "<pre>";
var_dump($array);
?>

array(5) {
[0]=>
string(3) "one"
[1]=>
string(3) "two"
["test"]=>
string(9) "yicunyiye"
[2]=>
string(5) "hello"
[3]=>
array(3) {
[0]=>
string(5) "hello"
[1]=>
string(5) "world"
[2]=>
array(2) {
[0]=>
string(5) "hello"
[1]=>
string(5) "world"
}
}
}

0x03 使用语句循环遍历数组

使用for语句循环遍历数组
使用foreach语句遍历数组
联合使用list( )、each( )和while循环遍历数组
使用数组的内部指针控制函数遍历数组

3.1 使用for语句循环遍历数组
<?php
  	$arr=array(1, 3, "for"=>4, 5, 6, 7, 8,9,10=>"aa","bb", "cc");
		
	for($i=0; $i<count($arr); $i++){
		echo "\$arr[".$i."]=".$arr[$i]."<br>";
	}
?>

$arr[0]=1
$arr[1]=3
$arr[2]=5
$arr[3]=6
$arr[4]=7
$arr[5]=8
$arr[6]=9
$arr[7]=
$arr[8]=
$arr[9]=
$arr[10]=aa

可以看到789为空,因为下标有些是字符串而for循环默认为int递增所以出现了问题可以看一下他正常的下标

array(11) {
[0]=>
int(1)
[1]=>
int(3)
["for"]=>
int(4)
[2]=>
int(5)
[3]=>
int(6)
[4]=>
int(7)
[5]=>
int(8)
[6]=>
int(9)
[10]=>
string(2) "aa"
[11]=>
string(2) "bb"
[12]=>
string(2) "cc"
}

3.2 使用foreach语句循环遍历数组
<?php
  	$arr=array(1, 3, "for"=>4, 5, 6, 7, 8,9,10=>"aa","bb", "cc");
	foreach ($arr as $key => $value) {
		echo "\$arr[".$key."]=".$value."<br>";
	}
?>

输出

$arr[0]=1
$arr[1]=3
$arr[for]=4
$arr[2]=5
$arr[3]=6
$arr[4]=7
$arr[5]=8
$arr[6]=9
$arr[10]=aa
$arr[11]=bb
$arr[12]=cc

3.3 联合使用list( )、each( )和while循环遍历数组
<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	reset($fruit);	//eset() 函数将内部指针指向数组中的第一个元素,并输出
  	while(list($key,$val) = each($fruit)){
  		echo "$key => $val\n";
  	}
?>

输出

a => apple b => banana c => cranberry

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	while($sz=each($fruit)){
  		echo $sz["key"]."==>".$sz["value"]."<br>";
  	}
?>

输出

a>apple
b
>banana
c==>cranberry

0x04 服务器变量:$_SERVER

<?php
  	var_dump($_SERVER);
?>

技术分享图片

0x05 数组相关处理函数

1 数组的键/值操作函数
2 统计数组元素的个数与唯一性
3 使用回调函数处理数组的函数
4 数组的排序函数
5 拆分、合并、分解与结合数组
6 数组与数据结构
7 其他有用的数组处理函数

5.1 数组的键/值操作函数

array_values?--?返回数组中所有的值

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	var_dump(array_values($fruit));
?>

输出

array(3) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(9) "cranberry" }
array_keys?--?返回数组中所有的键名

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	var_dump(array_keys($fruit));
?>

输出

array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
in_array?--?检查数组中是否存在某个值

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	if(in_array("apple",$fruit)){
  		echo "存在";
  	}
?>

输出

存在
array_flip?--?交换数组中的键和值

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	$b = array_flip($fruit);
  	foreach ($b as $key => $value) {
  		echo "$key==>$value"."<br>";
  	}
?>

输出

apple>a
banana
>b
cranberry==>c

array_reverse?--? 返回一个单元顺序相反的数组

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	$b = array_reverse($fruit);
  	foreach ($b as $key => $value) {
  		echo "$key=>$value"."<br>";
  	}
?>

输出

c=>cranberry
b=>banana
a=>apple

5.2 统计数组元素的个数与唯一性

count?--?计算数组中的单元数目或对象中的属性个数
array_count_values?--?统计数组中所有的值出现的次数
array_unique?--?移除数组中重复的值

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	var_dump(count($fruit));
?>

输出

int(3)

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘);
  	var_dump(array_count_values($fruit));
?>

输出

array(3) { ["apple"]=> int(1) ["banana"]=> int(1) ["cranberry"]=> int(1) }

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘,‘a‘ => ‘aaa‘);
  	var_dump(array_unique($fruit));
?>

输出

array(3) { ["a"]=> string(3) "aaa" ["b"]=> string(6) "banana" ["c"]=> string(9) "cranberry" }

5.3 使用回调函数处理数组的函数

array_filter?--? 用回调函数过滤数组中的单元
语法:rray array_filter ( array input [, callback callback] )
依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
如果没有提供 callback 函数,array_filter() 将删除 input 中所有等值为 FALSE 的条目。

<?php
  	$fruit= array(‘a‘ => ‘apple‘, ‘apple‘,‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘,‘a‘ => ‘aaa‘);
  	
  	function test($key){
  		if($key == ‘apple‘){
  			return true;
  		}else{
  			return false;
  		}
  	}

  	var_dump(array_filter($fruit,"test"));
?>

输出

array(1) { [0]=> string(5) "apple" }

array_map?--? 将回调函数作用到给定数组的单元上

<?php
$fruit= array(‘a‘ => ‘apple‘, ‘apple‘,‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘,‘a‘ => ‘aaa‘);
function myfunction($v)
{
	if($v == ‘apple‘){
		return $v." hello"; 
	}
	return $v;
}
print_r(array_map("myfunction", $fruit));
?>

输出

Array ( [a] => aaa [0] => apple hello [b] => banana [c] => cranberry )

5.4 数组的排序函数

sort -- 对数组排序(升序)
rsort -- 对数组逆向排序(降序)
usort -- 使用用户自定义的比较函数对数组中的值进行排序
asort -- 对数组进行排序并保持索引关系(关联数组排序)
arsort -- 对数组进行逆向排序并保持索引关系
uasort -- 用户自定义的比较函数对数组进行排序并保持索引关联
ksort -- 对数组按照键名排序
krsort -- 对数组按照键名逆向排序
uksort -- 使用用户自定义的比较函数对数组中的键名进行排序
natsort -- 用“自然排序”算法对数组排序
natcasesort -- 用“自然排序”算法对数组不区分大小写字母排序
array_multisort -- 对多个数组或多维数组进行排序

5.5 拆分、合并、分解与结合数组

array_splice?--? 把数组中的一部分去掉并用其它值取代

<?php
$fruit= array(‘a‘ => ‘apple‘,‘b‘ => ‘banana‘, ‘c‘ => ‘cranberry‘,‘a‘ => ‘aaa‘);

var_dump(array_splice($fruit, 1,2));
?>

输出

array(2) { ["b"]=> string(6) "banana" ["c"]=> string(9) "cranberry" }

array_combine -- 两个数组的键和值的合并

<?php
$array1 = [‘1‘,‘2‘,‘3‘];
$array2 = [‘one‘,‘two‘,‘three‘];
var_dump(array_combine($array1,$array2));
?>

输出

array(3) { [1]=> string(3) "one" [2]=> string(3) "two" [3]=> string(5) "three" }

array_intersect?--?计算数组的交集

<?php
$array1 = [‘1‘,‘2‘,‘3‘,‘bbb‘];
$array2 = [‘one‘,‘two‘,‘three‘,‘bbb‘];
var_dump(array_intersect($array1,$array2));
?>

输出

array(1) { [3]=> string(3) "bbb" }

array_diff?--?计算数组的差集

<?php
$array1 = [‘1‘,‘2‘,‘3‘,‘bbb‘];
$array2 = [‘one‘,‘two‘,‘three‘,‘bbb‘];
var_dump(array_diff($array1,$array2));
?>

输出

array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" }

5.6 数组与数据结构

array_pop?--?将数组最后一个单元弹出(出栈)
array_push?--? 将一个或多个单元压入数组的末尾(入栈)

<?php
$array1 = [‘1‘,‘2‘,‘3‘,‘bbb‘];
var_dump(array_pop($array1));
echo "<hr>";
var_dump($array1);
?>

输出

string(3) "bbb"
array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" }

<?php
$array1 = [‘1‘,‘2‘,‘3‘,‘bbb‘];
var_dump(array_pop($array1));
echo "<hr>";
var_dump($array1);
echo "<hr>";
var_dump(array_push($array1,"yicunyiye"));
echo "<hr>";
var_dump($array1);
?>

输出

string(3) "bbb"
array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" }
int(4)
array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(9) "yicunyiye" }

array_rand?--? 从数组中随机取出一个或多个单元
shuffle?--?将数组打乱

php第三天-数组的定义,数组的遍历,常规数组的操作

原文:https://www.cnblogs.com/yicunyiye/p/13631917.html

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