多維數組php
❶ php多維數組
查詢出來的數組就是
$a=array(array(1,"蘋果",1,"5元"),array(1,"蘋果",1,"5元"),array(1,"蘋果",1,"5元"));
$b=array(array(1,"白菜",2,"3元"),array(1,"白菜",2,"3元"));
分別查詢 $a 和 $b 後,用 $data = array('水果'=>$a,'蔬菜'=>$b) 就可以實現
❷ PHP使用array_multisort對多個數組或多維數組進行排序
PHP中array_multisort可以用來一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序。
關聯(string)鍵名保持不變,但數字鍵名會被重新索引。
輸入數組被當成一個表的列並以行來排序——這類似於
SQL
的
ORDER
BY
子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較為相同的話就按照下一個輸入數組中相應值的大小來排序,依此類推。——這句話是理解此函數用法的關鍵。
第一個參數必須是一個數組。接下來的每個參數可以是數組或者是下面列出的排序標志。
排序順序標志:
■SORT_ASC
-
按照上升順序排序
■SORT_DESC
-
按照下降順序排序
排序類型標志:
■SORT_REGULAR
-
將項目按照通常方法比較
■SORT_NUMERIC
-
將項目按照數值比較
■SORT_STRING
-
將項目按照字元串比較
每個數組之後不能指定兩個同類的排序標志。每個數組後指定的排序標志僅對該數組有效
-
在此之前為默認值
SORT_ASC
和
SORT_REGULAR。
看看兩個實際例子:
1、一次對多個數組進行排序:
復制代碼
代碼如下:
$num1
=
array(3,
5,
4,
3);
$num2
=
array(27,
50,
44,
78);
array_multisort($num1,
SORT_ASC,
$num2,
SORT_DESC);
print_r($num1);
print_r($num2);
//result:
Array
(
[0]
=>
3
[1]
=>
3
[2]
=>
4
[3]
=>
5
)
Array
(
[0]
=>
78
[1]
=>
27
[2]
=>
44
[3]
=>
50
)
2、對多維數組(以二位數組為例)進行排序:
復制代碼
代碼如下:
$arr
=
array(
'0'
=>
array(
'num1'
=>
3,
'num2'
=>
27
),
'1'
=>
array(
'num1'
=>
5,
'num2'
=>
50
),
'2'
=>
array(
'num1'
=>
4,
'num2'
=>
44
),
'3'
=>
array(
'num1'
=>
3,
'num2'
=>
78
)
);
foreach
(
$arr
as
$key
=>
$row
){
$num1[$key]
=
$row
['num1'];
$num2[$key]
=
$row
['num2'];
}
array_multisort($num1,
SORT_ASC,
$num2,
SORT_DESC,
$arr);
print_r($arr);
//result:Array([0]=>Array([num1]=>3
[num2]=>78)
[1]=>Array([num1]=>3
[num2]=>27)
[2]=>Array([num1]=>4
[num2]=>44)
[3]=>Array([num1]=>5
[num2]=>50))
總結:
這里的重點就是,先把要排序的key存到一個一維數組中,然後就可以使用array_multisort()這個函數,將數組按照key進行排序了,當然,這里的排序你完全可以不適用array_multisort()這個函數,僅僅通過foreach遍歷也能達到這個效果,但是既然php開發者給我們提供了更好的辦法,我們就可以省去不必要的麻煩了。
❸ PHP多維數組遍歷方法(2種實現方法)
本文實例講述了PHP多維數組遍歷方法。分享給大家供大家參考,具體如下:
方法一:
$a=array('fruits'=>array('a'=>'orange',
'b'=>'grape',c=>'apple'),
'numbers'=>array(1,2,3,4,5,6),
'holes'=>array('first',5=>'second','third')
);
foreach($a
as
$list=>$things){
if(is_array($things)){
foreach($things
as
$newlist=>$counter){
echo
"key:".$newlist."<br/>"."value:".$counter."<br/>";
}
}
}
方法二:
function
MulitarraytoSingle($array){
$temp=array();
if(is_array($array)){
foreach
($array
as
$key=>$value
)
{
if(is_array($value)){
MulitarraytoSingle($value);
}
else{
$temp[]=$value;
}
}
}
}
希望本文所述對大家PHP程序設計有所幫助。
❹ PHP多維數組
<?php
$arr = ['a','b',['c','d']];
foreach($arr as $i){
if(is_array($i)){
foreach($i as $j){
echo $j;
}
} else {
echo $i;
}
}
用is_array()函數判斷當前從數組中取到的元素是不是數組,如果是數組,就再加一層循環
❺ PHP實現指定欄位的多維數組排序函數分享
PHP數組排序可以用array_multisort方法實現,但是如果是多維數組,並且我們要指定數組中的某個欄位進行排序,那麼這就需要我們自己寫方法實現了。本文分享了一段PHP指定欄位的多維數組排序方法的代碼,這段代碼可實現根據field欄位對數組進行排序。
復制代碼
代碼如下:
function
sortArrByField(&$array,
$field,
$desc
=
false){
$fieldArr
=
array();
foreach
($array
as
$k
=>
$v)
{
$fieldArr[$k]
=
$v[$field];
}
$sort
=
$desc
==
false
?
SORT_ASC
:
SORT_DESC;
array_multisort($fieldArr,
$sort,
$array);
}
以上就是PHP指定欄位的多維數組排序方法,希望這段PHP代碼對你帶來幫助。
❻ php多維數組如何使用
$User[0][0]的值就是'張三'、$User[0][1]的值就是88;
$User[1][0]的值就是'lisi'、$User[1][1]的值就是90;
....
更高級的用法見下面的例子程序:
<?php
$User =array(
'張三' => 88,
'lisi' => 90,
'王五' => 99
);
print_r($User);
?>
這樣$User['張三']的值就是88,$User['lisi']的值就是90,是一維數組,而且更加方便。
❼ PHP創建多維數組
可以使用count函數來獲取第一維的元素個數
也可以使用count函數的遞歸形式獲取總元素個數
看以下示例:
<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard','pea'));
// recursive count
echo count($food, COUNT_RECURSIVE); // output 8
// normal count
echo count($food); // output 2
?>
foreach取出的應該是每個數組元素 你可以使用嵌套的foreach獲取每個元素
看以下示例:
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
❽ php如何輸出多維數組
foreach
字數夠沒。
❾ PHP 多維數組重組
用循環就好了呀
public function convert($originArr){
$newArr = array();
foreach($originArr as $arr) {
if (!empty($arr) && !empty($arr['id'])) {
$newArr[$arr['id']] = $arr;
}
}
return $newArr;
}
❿ PHP如何動態為多維數組的子數組分別添加元素
$a=array(0=>array("name"=>"a","mail"=>"b"),1=>array("name"=>"d","mail"=>"e"));
functionaddkey(&$val,$key,$param)
{
$val[$param['key']]=$param['val'];
}
array_walk($a,'addkey',array('key'=>'tel','val'=>'123'));
print_r($a);