PHP数组应用及学习小结

PHP数组

数组是一个能在单个变量中存储多个值的特殊变量,一种将values映射到keys的类型。

数组类型:

  1. 数值数组:带有数字ID键的数组
  2. 关联数组:带有指定键的数组
  3. 多维数组:包含一个或多个数组的数组

创建数组用array()

数值数组:

自动分配 ID 键(ID 键总是从 0 开始)

$car = array("Volvo,"BMW","LanBoGinia");

人工分配:

$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";

即访问"Volvo"为$car[0]

获取数组长度用count()

关联数组

关联数组是使用您分配给数组的指定的键的数组。

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

或者:

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

遍历关联数组:

<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
foreach($age as $x=>$x_val)
{
    echo "name: ".$x." and age is ".$x_val;
    echo '<br>';
}
?>

数组排序:

PHP数组排序函数方法有:sort()、rsort() 、asort() 、ksort()、arsort()、krsort()。

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列(reverse sort)
  • asort() - 根据关联数组的,对数组进行序排列
  • ksort() - 根据关联数组的,对数组进行序排列
  • arsort() - 根据关联数组的,对数组进行序排列
  • krsort() - 根据关联数组的,对数组进行序排列
<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
$car = array("BMW","Volvo","LanBoGinia");
sort($car);  //升序排序
$lens = count($car);
for($i = 0;$i<$lens;$i++)
{
    echo $car[$i];
    echo '<br>';
}
?>

PHP Web Application输出:

BMW
LanBoGinia
Volvo

asort()-根据数组的进行升序排序

arsort()-根据数组的进行降序排序

<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
arsort($age);
foreach($age as $x=>$x_val)
{
    echo $x." is ".$x_val;
    echo '<br>';
}
?>

PHP Web Application输出:

Mother is 50
WL is 22
YWH is 21

ksort()- 根据数组的键,对数组进行升序排列

krsort()- 根据数组的键,对数组进行降序排列

<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
ksort($age);
foreach($age as $x=>$x_val)
{
    echo $x." is ".$x_val;
    echo '<br>';
}
?>

PHP Web Application输出:

Mother is 50
WL is 22
YWH is 21

以下为一些针对数组的操作函数:

array_diff():比较数组,返回两个数组的差集(只比较键值)

函数原型:array_diff(array $array1, array $array2, array $_=null) : array

array1:必需。与其他数组进行比较的第一个数组。

array2:必需。与第一个数组进行比较的数组。

array3,….:可选。与第一个数组进行比较的其他数组。

返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2array3 等等)中的值。

{另外几个数组求差函数}

  • array_diff_assoc():比较数组,返回两个数组的差集(比较键名和键值)。
  • array_diff_key():比较数组,返回两个数组的差集(只比较键名)。
  • array_diff_uassoc():比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)
  • array_diff_ukey():比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。
<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
$date = array("month"=>50,"day"=>22);
$res = array_diff($age,$date);
foreach($res as $s=>$s_val)
{
    echo $s." ".$s_val;
}
?>

输出:

YWH 21
<?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("d"=>"red","b"=>"green","e"=>"blue");

$result=array_diff_uassoc($a1,$a2,"myfunction");
foreach($result as $s=>$s_val)
{
    echo $s.": ".$s_val,'<br>';
}
?>

输出:

a: red
c: blue
array_combine():通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。

函数原型:array_combine(array $keys, array $values) : array

<?php
$keyname = array("BMW","Volvo","LanBoGinia");
$keyval = array(100,80,200);
$res = array_combine($keyname,$keyval);
foreach($res as $x=>$x_val)
{
    echo $x." is ".$x_val,'<br>';
}
?>

输出:

BMW is 100
Volvo is 80
LanBoGinia is 200
array_fill():用给定的键值填充数组

函数原型:array_fill(int $start_index, int $num, mixed $value) : array

  • index:规定返回数组的起始索引。
  • number:规定填充的元素的数量,其值必须大于 0。
  • value:规定用于填充数组的键值。
<?php
$a1=array_fill(3,4,"blue");
print_r($a1);
?>

输出:

Array ([3] => blue[4] => blue[5] => blue[6] => blue ) 
array_ket_exists():检查指定的键名是否存在于数组中。

函数原型:array_key_exists(mixed $key, array $array) : bool

<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
$b = array_key_exists("WL",$age);
echo $b;
?>

输出:

1
array_keys():返回数组中所有的键名

函数原型:array_keys(array $array, mixed $search_value=null, bool $strict=null) : array

<?php
$age = array("YWH"=>21,"WL"=>22,"Mother"=>50);
$b = array_keys($age);
print_r($b);
?>

输出:

Array ([0] => YWH[1] => WL[2] => Mother ) 

相关函数:array_value(),返回函数中所有的值

array_merge():把两个或多个数组合并为一个数组

函数原型:array_merge(array $array1, array $_=null) : array

**注释:**如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。

**注释:**如果您仅仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引

<?php
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
$a3=array("d"=>"red","c"=>"green");
$merge = array_merge($a1,$a2,$a3);
print_r($merge);
?>

输出:

Array ([a] => red[b] => yellow[c] => green[d] => red ) 

相关函数:array_merge_recursive() 函数用于把一个或多个数组合并为一个数组。

该函数与 array_merge() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

<?php
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge_recursive($a1,$a2));
?>

输出:

Array ([a] => red[b] => Array([0] => green[1] => yellow)[c] => Array([0] => blue[1] => green)[d] => red ) 

array.pop():删除数组最后一个元素

函数原型:array_pop(array &$array) : mixed

array.push():将一个或多个元素插入素组的末尾

函数原型:array_push(array &$array, mixed $_=null) : int

array.shift():删除数组中的第一个元素,并返回被删除元素的值。

函数原型:array_push(array &$array, mixed $_=null) : int

<?php
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r($a1);
echo '<br>';
array_pop($a1);
print_r($a1);
echo '<br>';
array_push($a1,"black");
print_r($a1);
echo '<br>';
array_push($a1,$a2);
print_r($a1);
echo '<br>';
$first = array_shift($a1);
echo "first elem: ",$first,'<br>';
print_r($a1);
echo '<br>';
?>

输出:

Array ([a] => red[b] => green ) 
Array ([a] => red ) 
Array ([a] => red[0] => black ) 
Array ([a] => red[0] => black[1] => Array([c] => blue[b] => yellow) ) 
first elem: red
Array ([0] => black[1] => Array([c] => blue[b] => yellow) ) 
array.search():在数组中搜索给定的值,如果成功则返回相应的键名。

函数原型:array_search(mixed $needle, array $haystack, bool $strict=null) : mixed

<?php
$a1=array("a"=>"red","b"=>"green");
$keyname = array_search("green",$a1);
echo $keyname;
?>

输出:

b
array_slice():返回数组中的选定部分。

函数原型:array_slice(array $array, int $offset, int $length=null, bool $preserve_keys=null) : array

<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$keyname = array_slice($a1,1,3);
print_r($keyname);
?>

输出:

Array ([b] => green[c] => blue[d] => yellow ) 

相关函数:array_splice(),把数组中的指定元素去掉并用其它值取代。

array_sum():返回数组中所有值的和

函数原型:

<?php
$a1=array("a"=>1,"b"=>2,"c"=>7,"d"=>5);
$keyname = array_sum($a1);
print_r($keyname);
?>

输出:

15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值