PHP数组使用

  • 数组定义
  • 数组增、删、改
  • 数组查询
  • 数组排序
  • 数组合并、分割
  • 数组比较、去重复
  • 数组长度
  • 数组遍历
  • 数组转换
  • 其他操作
  • 二维数组
  • 三维数组
  • 数组应用

数组定义

  • array()

数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组
//自动分配 ID 键(ID 键总是从 0 开始):
$cars=array("Volvo","BMW","Toyota")
/// 人工分配 ID 键:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";

遍历数值数组可用【for循环】

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
    关联数组是使用您分配给数组的指定的键的数组。
//这里有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// 或者直接赋值。
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

遍历关联数组可用【foreach循环】

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>
  • 多维数组 - 包含一个或多个数组的数组
    一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组:
<?php
// 二维数组:
$cars = array
(
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
);

数组增、删、改、查

  • 增加元素
$arr= array();
 array_push($arr,1,2,3);

或者

$arr=array();
$arr[]=1;
$arr[]=2;
$arr[]=3;

在头部增加元素

array_unshit($arr,'新元素');
  • 修改元素
$arr[3]='新元素';
$arr['key']='新元素';
  • 删除元素
    做法一:unset()函数删除某个元素,原有索引值不变,索引值不连续。但是再使用array_values()函数对索引重新排序,就能达到要求了
// unset()函数删除某个元素,原有索引值不变,索引值不连续。
$all_array = array(0 => "Info", 1 => "jianshu", 2 => "CoderZB");
unset($all_array[1]);
dump($all_array);
// array_values()索引重新排序,这样索引就是连续的了。
$all_array = array_values($all_array);
dump($all_array);

打印结果:
array(2) {
[0] => string(4) "Info"
[2] => string(7) "CoderZB"
}
array(2) {
[0] => string(4) "Info"
[1] => string(7) "CoderZB"
}

做法二:array_splice()函数删除某个元素,索引值连续。

 $all_array = array(0 => "Info", 1 => "jianshu", 2 => "CoderZB");
 array_splice($all_array, 2, 1);// 删除索引为2,长度为1的元素。
 dump($all_array);
  • 删除多个元素
    array_diff(arr1,arr2)函数,返回两个数组不同部分
// array_diff()函数删除多个元素,原有索引值不变,索引值不连续。
$all_array = array(0 => "Info", 1 => "jianshu", 2 => "CoderZB",3 => "enjoy",4 => "reading");
$all_array = array_diff($all_array, ["Info", "enjoy"]);
dump($all_array);
// array_values()索引重新排序,这样索引就是连续的了。
$all_array = array_values($all_array);
dump($all_array);
  • 清空数组
unset($array)

数组查询

  • in_array(value,array,type) 函数
    该函数的作用是在数组array中搜索指定的value值,type是可选参数,如果设置该参数为 true ,则检查搜索的数据与数组的值的类型是否相同,即恒等于。
$people = array("Peter", "Joe", "Glenn", "Cleveland");
if(in_array("Glenn",$people)){
  echo "Match found";
}else{
  echo "Match not found";
}
  • array_key_exists(key,array)
    该函数是判断某个数组array中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。
$a=array("a"=>"Dog","b"=>"Cat");
if(array_key_exists("a",$a)){
 echo "Key exists!";
}else{
 echo "Key does not exist!";
}
  • array_search(value,array,strict)
    array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,则返回匹配该元素所对应的键名。如果没找到,则返回 false。注意在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。同样如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。
$a=array("a"=>"Dog","b"=>"Cat","c"=>5,"d"=>"5");
echo array_search("Dog",$a);
echo array_search("5",$a);

数组排序

数组合并、分割

  • 合并
    array_combine() 通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。

array_combine(keys,values);
keys数组 必需。规定数组的键名。
values数组必需。规定数组的键值。
返回值: 返回合并后的数组。如果两个数组的元素个数不相同,则返回 FALSE。

$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");
$c=array_combine($fname,$age);

Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )

  • 分割
    array_chunk(array,size,preserve_keys) 函数把一个数组分割为新的数组块。
    返回一个多维的数值数组,从 0 开始,每个维度都包含 size 元素。

array 必需。规定要使用的数组。
size 必需。一个整数,规定每个新数组块包含多少个元素。
preserve_key 可选。可能的值:
true - 保留原始数组中的键名。
false - 默认。每个新数组块使用从零开始的索引。

数组比较、去重复

  • array_diff() 函数用于比较两个(或更多个)数组的值,并返回差集。
    该函数比较两个(或更多个)数组的值(key=>value 中的 value),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的值。

array_diff(array1,array2,array3...);
参数 描述
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,... 可选。与第一个数组进行比较的其他数组。
返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的值。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff($a1,$a2);

Array ( [d] => yellow )

  • array_diff_assoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集。
  • array_diff_key() 函数用于比较两个(或更多个)数组的键名 ,并返回差集。
  • array_dff_uassoc() 比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)。
  • array_diff_ukey() 比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。

数组统计

  • count()统计数组长度
  • array_count_values()函数用于统计数组中所有值出现的次数

array_count_values(array)
array 必需。规定需要统计数组中所有值出现次数的数组。
返回值: 返回一个关联数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

$a=array("A","Cat","Dog","A","Dog");

Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )

数组遍历

数组转换

其他操作

  • array_change_key_case(array,case);
    函数将数组的所有的键都转换为大写字母或小写字母。

array 必需。规定要使用的数组。
case 可选。可能的值:
CASE_LOWER - 默认值。将数组的键转换为小写字母。
CASE_UPPER - 将数组的键转换为大写字母。

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
print_r(array_change_key_case($age,CASE_UPPER));

结果:

Array
(
[PETER] => 35
[BEN] => 37

[JOE] => 43

)

  • array_column() 返回输入数组中某个单一列的值的数组。

array_column(array,column_key,index_key);
array 必需。指定要使用的多维数组(记录集)。
column_key 必需。需要返回值的列。可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值。该参数也可以是 NULL,此时将返回整个数组(配合index_key 参数来重置数组键的时候,非常管用)。
index_key 可选。可选数组中的列作为返回数组的索引/键的列。
返回值: 返回一个数组,数组的值为输入数组中某个单一列的值。

// 可能从数据库中返回数组
$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Peter',
    'last_name' => 'Griffin',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Ben',
    'last_name' => 'Smith',
  ),
  array(
    'id' => 3809,
    'first_name' => 'Joe',
    'last_name' => 'Doe',
  )
);

$last_names = array_column($a, 'last_name');
print_r($last_names);

Array
(
[0] => Griffin
[1] => Smith
[2] => Doe
)

  • array_fill()函数用给定的键值填充数组。 返回填充的数组。

array_fill(index,number,value);
ndex 必需。规定返回数组的起始索引。
number 必需。规定填充的元素的数量,其值必须大于 0。
value 必需。规定用于填充数组的键值。

  • array_fill_keys ()函数用给定的指定键名的键值填充数组。返回填充的数组。

array_fill_keys(keys,value)
keys 必需。数组,其值将被用于填充数组的键名。
value 必需。规定用于填充数组的键值。

  • array_filter ()函数用回调函数过滤数组中的元素。
    array array_filter ( array array [, callablecallback [, int $flag = 0 ]] )

二维数组

三维数组

数组应用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容