php函数练习 2019.04.11

本文深入讲解PHP中的数组操作,包括array_slice(), array_column(), array_diff_key(), array_diff_uassoc()和array_chunk()函数的使用方法及示例。通过具体代码演示如何根据条件截取数组片段,提取特定列的数据,比较数组的键名和键值差异,以及如何将数组分割成指定大小的子数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2019.04.11 练习

  1. PHP array_slice() //根据条件取出一段值
  2. PHP array_column()//返回数组中某一列的值
  3. PHP array_diff_key()//比较两个或以上的键名,返回差集
  4. PHP array_diff_uassoc()//比较两个数组的键名和键值(使用用户自定义函数来比较键名),并返回差集:
  5. PHP array_chunk()//把数组分割为带有两个元素的数组
  • PHP array_slice()函数
    . 函数在数组中根据条件取出一段值,并返回。

    array_slice(array,start,length,preserve)

  1. 第一个参数必需。规定数组。
  2. 第二个参数必需。start如果为正数则从前往后取,如果为负数,start的绝对值从后往前取
  3. 第三个参数 可选。数值,规定被返回的数组的长度,正数返回该数量元素,如果为负数,例如-1则取出倒数第二个开始所有的元素,如果未设置则取出所有元素
  4. 可选。规定保留键名还是重置键名。true保留 false 不保留 默认:false
    注释:如果数组有字符串键,所返回的数组将保留键名。
<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow","e"=>"brown");
print_r(array_slice($a,1,2));

$a=array("0"=>"red","1"=>"green","2"=>"blue","3"=>"yellow","4"=>"brown");
print_r(array_slice($a,1,2));
?>
结果
Array ( [b] => green [c] => blue ) Array ( [0] => green [1] => blue )
  • PHP array_column()函数
    array_column() 返回输入数组中某个单一列的值。
    array_column(array,column_key,index_key);
    

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

例子 1
从记录集中取出 last_name 列,用相应的 "id" 列作为键值:

<?php
// 表示由数据库返回的可能记录集的数组
$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Bill',
    'last_name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Steve',
    'last_name' => 'Jobs',
  )
  array(
    'id' => 3809,
    'first_name' => 'Mark',
    'last_name' => 'Zuckerberg',
  )
);

$last_names = array_column($a, 'last_name', 'id');
print_r($last_names);
?>
输出:

Array
(
  [5698] => Gates
  [4767] => Jobs
  [3809] => Zuckerberg
)
  • PHP array_diff_key() 函数
比较两个数组的键名,并返回差集:

该函数比较两个(或更多个)数组的键名,并返回一个差集数组,
该数组包括了所有在被比较的数组(array1)中,
但是不在任何其他参数数组(array2 或 array3 等等)中的键名。


例子 2
比较三个数组的键名,并返回差集:

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("c"=>"yellow","d"=>"black","e"=>"brown");
$a3=array("f"=>"green","c"=>"purple","g"=>"red");

$result=array_diff_key($a1,$a2,$a3);
print_r($result);

运行结果:
Array ( [a] => red [b] => green )
?>
分别拿第二个和第三个数组同第一个数组比较,以第一个为基准,第二个数组只有键C和a1相同,
他和a1的差集就是a,b。第三个数组和第一个数组比较,没有键位相同,所以差集是abc,
所以三个数组的键差集为ab
  • PHP array_diff_uassoc() 函数
比较两个数组的键名和键值(使用用户自定义函数来比较键名),并返回差集:
array_diff_uassoc(array1,array2,array3...,myfunction);
array1	必需。与其他数组进行比较的第一个数组。
array2	必需。与第一个数组进行比较的数组。
array3,可选。与第一个数组进行比较的其他数组。
myfunction	必需。定义可调用比较函数的字符串。如果第一个参数小于、等于或大于第二个参数,
则该比较函数必须返回小于、等于或大于 0 的整数。

比较三个数组的键名和键值(使用用户自定义函数来比较键名),并返回差集:

<?php
function myfunction($a,$b)
{
if ($a===$b)
 {
 return 0;
 }
 return ($a>$b)?1:-1;
}

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

$result=array_diff_uassoc($a1,$a2,$a3,"myfunction");
print_r($result);
运行结果:
Array ( [c] => blue )
?>
  • PHP array_chunk() 函数
把数组分割为带有两个元素的数组:

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



 例子 1
		把数组分割为带有两个元素的数组,并保留原始数组中的键名:

<?php
$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31","David"=>"35");
print_r(array_chunk($age,2,true));
?>
运行结果:
Array ( [0] => Array ( [Bill] => 60 [Steve] => 56 ) [1] => Array ( [Mark] => 31 [David] => 35 ) )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值