数组的键/值操作函数

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

①函数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)

?>

>> 本文固定链接: http://php.ncong.com/php_course/arry_function/key-value.html

数组的键/值操作函数

时间: 2024-10-14 01:11:12

数组的键/值操作函数的相关文章

php数组键值操作和数组统计函数-函数

1.数组函数//作用:提供了很多官方写的很多有用的代码段,提高编写速度 1)数组的键值操作函数 array_values();//获取数组中的值 array_keys();//获取数组中的键 in_array();//检查一个值是否在数组中 array_flip();//键和值对调 array_reverse();//数组中的值反转 模拟获取key的数值<?php $arr=array ("name"=>"user1","age"=&

PHP 按二维数组的键值排序

/** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升序/降序 * @return multitype:unknown 返回排序后的数组 */ public static function arr_sort_in_key($array, $key, $order = "asc") { $arr_nums = $arr = array(); f

数组和键/值对的用法(文字转换相对应数字和文字)代替switch

1 string[] MethodRepayment = { "按月付息到期还本", "到期一次性还本息", "等额本息还款方式", "等额本金还款方式" }; 2 KeyValuePair<string, string>[] pair = { 3 new KeyValuePair<string,string>("等额本息还款方式","1"), 4 new Key

改变数组的键值

1.改变多维数组的键值 /**用法: $keyEnArray = array("奖品" , "标识","编码"); $keyZhCnArray = array('prize', 'sign','code'); $result = changeKeys($data, $keyEnArray, $keyZhCnArray); $keyEnArray 原键值 $keyZhCnArray 改变后的键值 */ function changeKeys($ar

smarty中ifelse、foreach以及获取数组中键值名的一个实例

<{if empty($history)}> <tr> <td colspan="6">Not any records!</td> </tr> <{else}> <{foreach from=$history item=item}> <tr> <td><{$item.id}></td> <td> <div style="max-

mysql中,通过json_insert函数向json字段插入键值?json_insert函数的使用?

需求描述: 通过json_insert向json字段中插入值,在此进行实验,记录下. 操作过程: 1.查看已经有的包含json数据类型的表 mysql> select * from tab_json; +----+------------------------------------------------------------------------------------------------+ | id | data | +----+-------------------------

JavaScript中把数组当做键值对集合使用。

<script type="text/javascript"> var names = new Array(); names[0] = "张三"; names[1] = "李四"; names[2] = "王五"; names[3] = "赵六"; //键值对集合是没有length长度的,所以遍历的时候使用forin循环来遍历. //对于普通数组遍历的时候要使用for循环来遍历. for (va

python数组冒号取值操作

1.冒号的用法 1.1 一个冒号 a[i:j] 这里的i指起始位置,默认为0:j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j(不包括j) 在一个冒号的情况下若出现负数则代表倒数某个位置 a[i:-j] 这里就是从下标i取到倒数第j个下标之前(不包括倒数第j个下标位置的元素) 1.2 两个冒号 a[i:j:h] 这里的i,j还是起始位置和终止位置,h是步长,默认为1 若i/j位置上出现负数依然倒数第i/j个下标的位置,h若为负数则是逆序输出,这时要求起始

整理JS对数组的内置操作函数

一丶JavaScript push() 方法 数组中添加新元素: var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.push("Kiwi") fruits 结果输出: Banana,Orange,Apple,Mango,Kiwi 定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 注意: 新元素将添加在数组的末