博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组的键/值操作函数
阅读量:4477 次
发布时间:2019-06-08

本文共 5011 字,大约阅读时间需要 16 分钟。

PHP中,数组的每个元素都是由键/值组成的,通过元素的键来访问对应的键的值。“关联数组”指的是键名为字符串的数组,“索引”和“键名”指的是同一样东西。“索引”多指数组的数字形式的下标。使用数组的处理函数,可以很方便地对数组中的每个元素的键和值进行操作,进而生成一个新数组。

①函数array_values()

array_values()函数的作用是返回数组中所有元素的值。使用非常容易,只有一个必选参数,规定传入给定的数组,返回一个包含给定数组中所有值得数组。但不保留键名,被返回的数组将使用顺序的数值键重新建立索引,从0开始并且以1递增。适合用于数组中元素下表混乱的数组,或者可以将关联数组转化为索引数组。代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$contact
=
array
(
"ID"
=> 1,
"姓名"
=>
"高某"
,
"公司"
=>
"A公司"
,
"地址"
=>
"北京市"
,
"电话"
=>
"(010)98765432"
);
 
//array_values()函数传入数组$contact 重新索引返回一个新数组
 
print_r(
array_values
(
$contact
));
print_r(
$contact
);
//原数组$contact内容元素不变
?>

该程序运行后的结果如下所示:

Array([0]=>1 [1]=>高某 [2]=>A公司 [3]=>北京市 [4]=>(010)98765432)
Array([ID]=>1 [姓名]=>高某 [公司]=>A公司 [地址]=> 北京市 [电话]=>(010)98765432)

②函数array_keys()

array_keys()函数的作用是返回数组中所有的键名。本函数中有一个必须参数和两个可选参数,其函数的原型如下:

array array_keys(array input[,mixed search_value[,bool strict]])

如果指定了可选参数search_value,则只返回指定该值得键名,否则input数组中的所有键名都会被返回。自PHP5起,可以用strict参数来进行全等比较。需要传入一个布尔型的值,FALSE为默认值不依赖类型。如果传入TRUE值则根据类型返回带有指定值得键名。函数array_keys()使用的代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$lamp
=
array
(
"a"
=>
"Linux"
,
"b"
=>
"Apache"
,
"c"
=>
"MySQL"
,
"d"
=>
"php"
);
print_r(
array_keys
(
$lamp
));
//输出Array([0]=>a [1]=>b [2]=>c)
print_r(
array_keys
(
$lamp
,
"Apache"
));
//使用第二个可选参数输出:Array([0]=>b)
 
$a
=
array
(10,20,30,
"10"
);
//声明一个数组,其中元素的值有整数10和字符串"10"
print_r(
array_keys
(
$a
,
"10"
,false));
//使用第三个参数(false)输出:Array([0]=>0 [1]=>3)
 
$a
=
array
(10,20,30,
"10"
);
//声明一个数组,其中元素的值有整数10和字符串"10"
print_r(
array_keys
(
$a
,
"10"
,true));
//使用第三个参数(true)输出:Array([0]=>3)
 
?>

③函数in_array()

in_array()函数的作用是检查数组中是否存在某个值,即在数组中搜索给定的值。本函数中有三个参数,前两个参数为必须的,最后一个参数为可选的。其函数的原型如下:

bool in_array(mixed needle,array haystack[,bool strict])

第一个参数needle为规定要在数组中搜索的值,第二个参数haystack是规定要被搜索的数组,如果给定的值needle存在于数组haystack中则返回TRUE。如果第三个参数设置为TRUE,函数只有在元素存在于数组中且数据类型于给定值相同时才返回TRUE。如果没有在数组中找到参数,函数返回FALSE。要注意如果needle参数是字符串,且strict参数设置为TRUE,则搜索区分大小写。函数array_keys()使用的代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
    
//in_array()函数的简单使用形式
    
$os
=
array
(
"Mac"
,
"NT"
,
"Trix"
,
"Linux"
);
 
    
if
(in_array(
"Trix"
,
$os
)){          
//这个条件成立,字符串Trix在数组$os中
        
echo
"Got Trix"
;
    
}
 
    
if
(in_array(
"mac"
,
$os
)){           
//这个条件失败,因为in_array()是区分大小写的
        
echo
"Got mac"
;
    
}
 
    
//in_array严格类型检查例子
    
$a
=
array
(
'1.10'
,12.4,1.13);
 
    
//第三个参数为true,所以字符串'12.4'和浮点数12.4类型不同
    
if
(in_array(
'12.4'
,
$a
,true)){
        
echo
"'12.4' found with strict check\n"
;
    
}
 
    
if
(in_array(1.13,
$a
,true)){           
//这个条件成立,执行下面的语句
        
echo
"1.13 found with strict check\n"
;
    
}
 
    
//in_array()中还可以用数组当做第一个参数作为查询条件
    
$a
=
array
(
array
(
'p'
,
'h'
),
array
(
'p'
,
'r'
),
'o'
);
 
    
if
(in_array(
array
(
'p'
,
'h'
),
$a
)){           
//数组array('p','h')在数组$a中存在
        
echo
"'ph'was found\n"
;
    
}
 
    
if
(in_array(
array
(
'h'
,
'p'
),
$a
)){           
//数组array('h','p')在数组$a中不存在
        
echo
"'hp'was found\n"
;
    
}
?>

也可以使用array_search()函数进行检索。该函数与in_array()的参数相同,搜索给定的值,存在则返回相应的键名,也支持对数据类型的严格判断。函数array_search()使用的代码如下所示:

1
2
3
4
5
6
7
<?php
    
$lamp
=
array
(
"a"
=>
"Linux"
,
"b"
=>
"Apache"
,
"c"
=>
"MySQL"
,
"d"
=>
"php"
);
    
echo
array_search
(
"php"
,
$lamp
);        
//输出:d(在数组$lamp中,存在字符串"php"则输出下标d)
 
    
$a
=
array
(
"a"
=>
"8"
,
"b"
=>8,
"c"
=>
"8"
);
    
echo
array_search
(8,
$a
,ture);          
//输出b(严格按类型检索,整型8对应的下标b)
?>

此外,使用array_key_exists()函数还可以检查给定的键名或索引是否存在于数组中。因为在一个数组中键名必须是唯一的,所以不需要对其数据类型进行判断。也可以使用isset()函数完成对数组中的键名进行检查,单isset()对于数组中为NULL的值不会返回TRUE,而array_key_exists()会。代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    
$search_array
=
array
(
'first'
=>1,
'second'
=>4);           
//声明一个关联数组,其中包含两个元素
 
    
if
(
array_key_exists
(
'first'
,
$search_arry
)){            
//检查下标为first对应的元素是否在数组中
        
echo
"键名为'first'的元素在数组中"
;
    
}
 
    
$search_array
=
array
(
'first'
=> null,
'second'
=>4);           
//声明一个关联数组,第二个元素的值为NULL
 
    
isset(
$search_array
[
'first'
]);                 
//用isset()检索下标为first的元素返回false
    
array_key_exists
(
'first'
,
$search_array
);               
//用array_key_exists()检索下标为first的元素返回true
?>

④函数array_flip()

array_flip()的作用是交换数组中的键和值。返回一个反转后的数组,如果同一个值出现了多次,则最后一个键名将作为它的值,覆盖前面出现的元素。如果原数组中的值数据类型不是字符串或整数,函数将报错。该函数只有一个参数,其函数原型如下:

array array_flip(trans)

参数是必须的,要求输入一个要处理的数组,返回该数组中每个元素的键和值交换后的数组。函数array_flip()使用的代码如下所示:

1
2
3
4
5
6
7
8
9
10
<?php
    
$lamp
=
array
(
"os"
=>
"linux"
,
"WebServer"
=>
"Apache"
,
"Database"
=>
"MySQL"
,
"Language"
=>
"PHP"
);
 
    
//输出:Array([linux]=>os [Apache]=>WebServer [MySQL]=>Database [PHP]=Language);
    
print_r(
array_flip
(
$lamp
));            
//使用array_flip()函数交换数组中的键和值
 
    
//在数组中如果元素的值相同,则使用array_flip()会发生冲突
    
$trans
=
array
(
"a"
=>1,
"b"
=>1,
"c"
=2);
    
print_r(
array_flip
(
$trans
));           
//现在$trans变成了:Array([1]=> b [2]=> c)
?>

⑤函数array_reverse()

array_reverse()作用是原数组中的元素顺序翻转,创建新的数组并返回。该函数有两个参数,其函数的原型如下:

array array_reverse(array array[,bool preserve_keys])

第一个参数是必选项,接收一个数组作为输入。第二个参数是可选项,如果指定为TRUE,则元素的键名保持不变,否则键名将会丢失。函数array_reverse()使用的代码如下所示:

1
2
3
4
5
6
7
<?php
    
$lamp
=
array
(
"OS"
=>
"Linux"
,
"WebServer"
=>
"Apache"
,
"Database"
=>
"MySQL"
,
"Language"
=>
"PHP"
);
 
    
//使用array_reverse()函数将数组$lamp中的元素的顺序翻转
    
print_r(
array_reverse
(
$lamp
));
    
//输出的结果Array([Language]=>PHP [Database]=>MySQL [WebServer]=>Apache  [OS]=>Linux)
?>
 

转载于:https://www.cnblogs.com/ncong/p/3899192.html

你可能感兴趣的文章
Python批量获取京东商品列表信息
查看>>
2017.7.10 C组总结
查看>>
SourceTree下载 及使用
查看>>
MyEclipse下安装FatJar打包工具
查看>>
什么是域名-视频讲解?
查看>>
大道至简第六章-从编程到工程
查看>>
单元测试——隔离神器:mockito
查看>>
【leetcode】Binary Tree Zigzag Level Order Traversal
查看>>
Python网络数据采集pdf
查看>>
《CSS3.0(飘零雾雨版)》
查看>>
Microsoft Dynamics CRM 里的account 左侧导航栏连接报表
查看>>
一次域渗透尝试
查看>>
个人工作总结03(冲刺二)
查看>>
BLE 5协议栈-通用属性规范层(GATT)
查看>>
第3周学习进度
查看>>
【★】EIGRP终极解析!
查看>>
5.2 dubbo-compiler源码解析
查看>>
第十二章 ThreadPoolExecutor使用 + 工作机理 + 生命周期
查看>>
介绍 ASP.NET Web 编程使用 Razor 语法 (C#)
查看>>
SQL Server Profiler(转载)
查看>>