php處理數組
① php 遞歸處理數組,並組合成新的數組
/**
*多維數組遞歸合並
*/
functionmultimerge(){
$arrs=func_get_args();
$merged=array();
while($arrs){
$array=array_shift($arrs);
if(!$array){
continue;
}
foreach($arrayas$key=>$value){
if(is_string($key)){
if(is_array($value)&&array_key_exists($key,$merged)&&is_array($merged[$key])){
$merged[$key]=call_user_func(__FUNCTION__,$merged[$key],$value);
}else{
$merged[$key]=$value;
}
}else{
$merged[]=$value;
}
}
}
return$merged;
}
$a1=array('user'=>array('name'=>'tony','score'=>23));
$a2=array('user'=>array('name'=>'tony','score'=>255),'name'=>'tom');
$a3=array('user'=>array('name'=>'tony','score'=>288,'test'=>'abc'),'name'=>'jack');
$result=multimerge($a1,$a2,$a3);
var_mp($result);
② PHP處理數組常用的幾個函數
一、數組操作的基本函數
數組的鍵名和值
array_values($arr); 獲得數組的值
array_keys($arr); 獲得數組的鍵名
array_flip($arr); 數組中的值與鍵名互換(如果有重復前面的會被後面的覆蓋)
in_array("apple",$arr); 在數組中檢索apple
array_search("apple",$arr); 在數組中檢索apple ,如果存在返回鍵名
array_key_exists("apple",$arr); 檢索給定的鍵名是否存在數組中
isset($arr[apple]): 檢索給定的鍵名是否存在數組中
數組的內部指針
current($arr); 返回數組中的當前單元
pos($arr); 返回數組中的當前單元
key($arr); 返回數組中當前單元的鍵名
prev($arr); 將數組中的內部指針倒回一位
next($arr); 將數組中的內部指針向前移動一位
end($arr); 將數組中的內部指針指向最後一個單元
reset($arr; 將數組中的內部指針指向第一個單元
each($arr); 將返回數組當前元素的一個鍵名/值的構造數組,並使數組指針向前移動一位
list($key,$value)=each($arr); 獲得數組當前元素的鍵名和值
數組和變數之間的轉換
extract($arr);用於把數組中的元素轉換成變數導入到當前文件中,鍵名當作變數名,值作為變數值
註:(第二個參數很重要,可以看手冊使用)使用方法 echo $a;
compact(var1,var2,var3);用給定的變數名創建一個數組
二、數組的分段和填充
數組的分段
array_slice($arr,0,3); 可以將數組中的一段取出,此函數忽略鍵名
array_splice($arr,0,3,array("black","maroon")); 可以將數組中的一段取出,與上個函數不同在於返回的序列從原數組中刪除
分割多個數組
array_chunk($arr,3,TRUE); 可以將一個數組分割成多個,TRUE為保留原數組的鍵名
數組的填充
array_pad($arr,5,'x'); 將一個數組填補到制定長度
三、數組與棧
array_push($arr,"apple","pear"); 將一個或多個元素壓入數組棧的末尾(入棧),返回入棧元素的個數
array_pop($arr); 將數組棧的最後一個元素彈出(出棧)
四、數組與列隊
array_shift($arr);數組中的第一個元素移出並作為結果返回(數組長度減1,其他元素向前移動一位,數字鍵名改為從零技術,文字鍵名不變)
array_unshift($arr,"a",array(1,2));在數組的開頭插入一個或多個元素
五、回調函數
array_walk($arr,'function','words'); 使用用戶函數對數組中的每個成員進行處理(第三個參數傳遞給回調函數function)
array_mpa("function",$arr1,$arr2); 可以處理多個數組(當使用兩個或更多數組時,他們的長度應該相同)
array_filter($arr,"function"); 使用回調函數過濾數組中的每個元素,如果回調函數為TRUE,數組的當前元素會被包含在返回的結果數組中,數組的鍵名保留不變
array_rece($arr,"function","*"); 轉化為單值函數(*為數組的第一個值)
六、數組的排序
通過元素值對數組排序
sort($arr); 由小到大的順序排序(第二個參數為按什麼方式排序)忽略鍵名的數組排序
rsort($arr); 由大到小的順序排序(第二個參數為按什麼方式排序)忽略鍵名的數組排序
usort($arr,"function"); 使用用戶自定義的比較函數對數組中的值進行排序(function中有兩個參數,0表示相等,正數表示第一個大於第二個,負數表示第一個小於第二個)忽略鍵名的數組排序
asort($arr); 由小到大的順序排序(第二個參數為按什麼方式排序)保留鍵名的數組排序
arsort($arr); 由大到小的順序排序(第二個參數為按什麼方式排序)保留鍵名的數組排序
uasort($arr,"function"); 使用用戶自定義的比較函數對數組中的值進行排序(function中有兩個參數,0表示相等,正數表示第一個大於第二個,負數表示第一個小於第二個)保留鍵名的數組排序
通過鍵名對數組排序
ksort($arr); 按照鍵名正序排序
krsort($arr); 按照鍵名逆序排序
uksort($arr,"function"); 使用用戶自定義的比較函數對數組中的鍵名進行排序(function中有兩個參數,0表示相等,正數表示第一個大於第二個,負數表示第一個小於第二個)
自然排序法排序
natsort($arr); 自然排序(忽略鍵名)
natcasesort($arr); 自然排序(忽略大小寫,忽略鍵名)
七、數組的計算
數組元素的求和
array_sum($arr); 對數組內部的所有元素做求和運算
數組的合並
array_merge($arr1,$arr2); 合並兩個或多個數組(相同的字元串鍵名,後面的覆蓋前面的,相同的數字鍵名,後面的不會做覆蓋操作,而是附加到後面)
「+」$arr1+$arr2; 對於相同的鍵名只保留後一個
array_merge_recursive($arr1,$arr2); 遞歸合並操作,如果數組中有相同的字元串鍵名,這些值將被合並到一個數組中去。如果一個值本身是一個數組,將按照相應的鍵名把它合並為另一個數組。當數組 具有相同的數組鍵名時,後一個值將不會覆蓋原來的值,而是附加到後面
數組的差集
array_diff($arr1,$arr2); 返回差集結果數組
array_diff_assoc($arr1,$arr2,$arr3); 返回差集結果數組,鍵名也做比較
數組的交集
array_intersect($arr1,$arr2); 返回交集結果數組
array_intersect_assoc($arr1,$arr2); 返回交集結果數組,鍵名也做比較
八、其他的數組函數
range(0,12); 創建一個包含指定范圍單元的數組
array_unique($arr); 移除數組中重復的值,新的數組中會保留原始的鍵名
array_reverse($arr,TRUE); 返回一個單元順序與原數組相反的數組,如果第二個參數為TRUE保留原來的鍵名
//srand((float)microtime()*10000000); 隨機種子觸發器
array_rand($arr,2); 從數組中隨機取出一個或 多個元素
shuffle($arr); 將數組的順序打亂
求課吧有很多關於PHP編程方面的教程
③ php里說出數組的常用函數及用法
PHP常用操作數組的函數
變數和數組的轉換
compact() 將變數整合成數組
extract() 將數組中的每個值以鍵的名分解成變數
變數和字元串轉換
explode() 以某個子串分解字元串成數組
implode() 將一維數組根據某個符號拼接成字元串
數組與數組之間關系
array_merge() 合並/並集
array_diff() 差集
array_intersect() 交集
數組值的操作
array_pop() 刪除(彈出)數組最後一個值
array_push() 向數組中追加一個值
判斷數組是否存在數組中
in_array() 判斷一個值是否存在數組中
array_key_exists() 判斷鍵是否存在數組中
數組去重
array_unique() 數組去重
獲取二維數組中的值的集合
array_column() 獲取二維數組中的值的集合
提取數組的鍵與值
array_values 提取數組的值構成一維數組
array_keys 提取數組的鍵構成一維數組
返回數組中的隨機的鍵
array_rand() 返回數組中的隨機的鍵
返回數組中值的數量
count() 返回數組中值的和
查詢數組中的值
array_search() 查詢數組中的值是否存在/in_array()有點相似
排序
sort() 排序有很多種,按鍵或值升降序
array_multisort() 多維數組排序
分割數組
array_chunk()
④ php 處理數組
foreach($arrayas$v){//$array是要重組的數組
$val1[]=$v[0];
$val2[]=$v[1];
$val3[]=$v[2];
$val4[]=$v[3];
}
//生成4個同類數組
⑤ php中數組處理
樓主可以用jion查詢把兩張表的結果合2為1
sql">SELECTcolumn_name(s)
FROMtable_name1
LEFTJOINtable_name2
ONtable_name1.column_name=table_name2.column_name
這樣出來的結果就直接為一個大數組
⑥ PHP處理多選數組問題
<?php
//判斷是否提交(建立按鈕)
if(isset($_POST['button'])){
//判斷是del值是否已經設置
if(isset($_POST['deltype'])){
//把$_POST['deltype']數組轉換成字元串
$str = implode(",",$_POST['deltype']);
//在頁面輸出內容
echo $str;
}
}
?>
<form id="form1" name="form1" method="post" action="">
<select name="deltype[]" size="5" multiple="multiple" id="deltype[]">
<option value="電費">電費</option><option value="水費">水費</option><option value="工資">工資</option><option value="火食費">火食費</option><option value="玩游戲賺的外快">玩游戲賺的外快</option>
</select>
<input type="submit" name="button" id="button" value="建立" />
</form>
把上面的代碼保存成php文件就行
⑦ php數組的基本語法 : PHP 數組
數組能夠在單獨的變數名中存儲一個或多個值。
實例
數組在單個變數中存儲多個值:
<?php
$cars=array("Volvo","BMW","SAAB");
echo
"I
like
"
.
$cars[0]
.
",
"
.
$cars[1]
.
"
and
"
.
$cars[2]
.
".";
?>
什麼是數組?
數組是特殊的變數,它可以同時保存一個以上的值。
如果您有一個項目列表(例如汽車品牌列表),在單個變數中存儲這些品牌名稱是這樣的:
$cars1="Volvo";
$cars2="BMW";
$cars3="SAAB";
不過,假如您希望對變數進行遍歷並找出特定的那個值?或者如果您需要存儲
300
個汽車品牌,而不是
3
個呢?
解決方法是創建數組!
數組能夠在單一變數名中存儲許多值,並且您能夠通過引用下標號來訪問某個值。
在
PHP
中創建數組
在
PHP
中,
array()
函數用於創建數組:
array();
在
PHP
中,有三種數組類型:
索引數組
-
帶有數字索引的數組
關聯數組
-
帶有指定鍵的數組
多維數組
-
包含一個或多個數組的數組
PHP
索引數組
有兩種創建索引數組的方法:
索引是自動分配的(索引從
0
開始):
$cars=array("Volvo","BMW","SAAB");
或者也可以手動分配索引:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";
下面的例子創建名為
$cars
的索引數組,為其分配三個元素,然後輸出包含數組值的一段文本:
實例
<?php
$cars=array("Volvo","BMW","SAAB");
echo
"I
like
"
.
$cars[0]
.
",
"
.
$cars[1]
.
"
and
"
.
$cars[2]
.
".";
?>
獲得數組的長度
-
count()
函數
count()
函數用於返回數組的長度(元素數):
實例
<?php
$cars=array("Volvo","BMW","SAAB");
echo
count($cars);
?>
遍歷索引數組
如需遍歷並輸出索引數組的所有值,您可以使用
for
循環,就像這樣:
實例
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo
$cars[$x];
echo
"<br>";
}
?>
PHP
關聯數組
關聯數組是使用您分配給數組的指定鍵的數組。
有兩種創建關聯數組的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或者:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
隨後可以在腳本中使用指定鍵:
實例
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
echo
"Peter
is
"
.
$age['Peter']
.
"
years
old.";
?>
遍歷關聯數組
如需遍歷並輸出關聯數組的所有值,您可以使用
foreach
循環,就像這樣:
實例
<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
foreach($age
as
$x=>$x_value)
{
echo
"Key="
.
$x
.
",
Value="
.
$x_value;
echo
"<br>";
}
?>
⑧ PHP的數組處理!
<?php
$aa=array('28'=>0,'27'=>0,'26'=>0,'25'=>0,'24'=>0,'23'=>0,'22'=>0);
$bb=array('27'=>1,'25'=>3,'23'=>1);
foreach ($aa as $ak => $av){
foreach ($bb as $bk => $bv){
if($ak==$bk){
$aa[$ak]=$bb[$bk];
}
}
}
print_r($aa);
⑨ php怎麼處理這個數組
<?php
$arr="你上邊的數組";
$newArr=array();
foreach($arras$key=>$value){
if(key_exists($value['mid'],$newArr){
$newArr[$value['mid']['sum']+=$value['sum'];
}else{
$newArr[$value['mid']]=$value;
}
}
⑩ 用php實現數組數據的處理
$logis_name = array('韻達','順豐','申通','韻達');
$logis_no = array('123465','123654','654123','456789');
$data = array();
foreach($logis_name as $key => $value){
if(isset($data[base64_encode($value)])){
$data[base64_encode($value)] = $data[base64_encode($value)].','.$logis_no[$key];
}else{
$data[base64_encode($value)] = $logis_no[$key];
}
}
$data = implode('|',$data);
print_r($data);