PHP數組
數組是一個能在單個變量中存儲多個值的特殊變量,一種將values映射到keys的類型。
數組類型:
- 數值數組:帶有數字ID鍵的數組
- 關聯數組:帶有指定鍵的數組
- 多維數組:包含一個或多個數組的數組
創建數組用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)中,但是不在任何其他參數數組(array2 或 array3 等等)中的值。
{另外幾個數組求差函數}
- 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