1. 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()函數判斷當前從數組中取到的元素是不是數組,如果是數組,就再加一層循環
2. php多數組傳遞參數問題,在線等
這是我自己寫的,看看是否能滿足你的需求,因為你的b函數沒有給出,所以我隨便構造了一個,這里我只接收了5個參數,還需要的話可以自行添加,給定默認值就行:
functionb($name,$data0='',$data1='',$data2='',$data3=''){
print_r([$name,$data0,$data1,$data2,$data3]);
}
functiona($name,$data){
array_unshift($data,$name);
call_user_func_array('b',$data);
}
a('name',['1','2']);
3. 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";
}
}
4. php合並一個或多個數組
array_merge
(PHP 4, PHP 5, PHP 7)
array_merge — 合並一個或多個數組
1.說明
array_merge ([ array $... ] ) : array
將一個或多個數組的單元合並起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。
如果輸入的數組中有相同的字元串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將 不會 覆蓋原來的值,而是附加到後面。
如果輸入的數組存在以數字作為索引的內容,則這項內容的鍵名會以連續方式重新索引。
2.參數
...
要合並的數組。
返回值
返回合並後的結果數組。如果參數為空,則返回空 array。
更新日誌
版本 說明
7.4.0 允許不帶參數調用,之前版本至少需要一個參數。
3.範例
示例 #1 array_merge() 示例
"red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
5. php下將多個數組合並成一個數組的方法與實例代碼
1.合並數組
array_merge()函數將數組合並到一起,返回一個聯合的數組。所得到的數組以第一個輸入數組參數開始,按後面數組參數出現的順序依次迫加。其形式為:
復制代碼
代碼如下:
array
array_merge
(array
array1
array2…,arrayN)
將一個或多個數組的單元合並起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。
如果輸入的數組中有相同的字元串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。
如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。
實例如下:
復制代碼
代碼如下:
$face
=
array("J","Q","K","A");
$numbered
=
array("2","3","4","5","6","7","8","9");
$cards
=
array_merge($face,
$numbered);
shuffle($cards);
print_r($cards);
這將返回如下所示的結果,運行代碼:
復制代碼
代碼如下:
Array
(
[0]
=>
A
[1]
=>
4
[2]
=>
9
[3]
=>
3
[4]
=>
K
[5]
=>
7
[6]
=>
5
[7]
=>
Q
[8]
=>
6
[9]
=>
8
[10]
=>
2
[11]
=>
J
)
2.遞歸追加數組
array_merge_recursive()函數與array_merge()相同,可以將兩個或多個數組合並在一起,形成一個聯合的數組.兩者之間的區別在於,當某個輸入數組中的某個鍵己經存在於結果數組中時該函數會採取不同的處理方式.array_merge()會覆蓋前面存在的鍵/值對,替換為當前輸入數組中的鍵/值對,而array_merge_recursive()將把兩個值合並在一起,形成一個新的數組,並以原有的鍵作為數組名。還有一個數組合並的形式,就是遞歸追加數組。其形式為:
view
sourceprint?array
array_merge_recursive(
array
key,array
values
)
示例如下:
復制代碼
代碼如下:
$class1
=
array("John"
=>
100,
"James"
=>
85);
$class2
=
array("Micky"
=>
78,
"John"
=>
45);
$classScores
=
array_merge_recursive($class1,
$class2);
print_r($classScores);
這將返回如下結果:
view
sourceprint?Array
(
[John]
=>
Array
(
[0]
=>
100
[1]
=>
45
)
[James]
=>
85
[Micky]
=>
78
)
3.連接兩個數組
array_combine()函數會得到一個新數組,它由一組提交的鍵和對應的值組成。其形式為:
view
sourceprint?array
array_merge(array
array1,array
array2[…,array
arrayN])
注意,兩個輸入數組必須大小相同,不能為空。示例如下:
復制代碼
代碼如下:
$abbreviations
=
array("AL","AK","AZ","AR");
$states
=
array("Alabama","Alaska","Arizona","Arkansas");
$stateMap
=
array_combine($abbreviations,$states);
print_r($stateMap);
這會返回:
復制代碼
代碼如下:
Array
(
[AL]
=>
Alabama
[AK]
=>
Alaska
[AZ]
=>
Arizona
[AR]
=>
Arkansas
)
6. php 定義多維數組
$old=array(
0=>array('begin>1','end>10000','price>0.45'),
1=>array('begin>10001','end>100000','price>0.40')
);
foreach($oldas$k=>$v){
foreach($vas$c){
$tmp=explode('>',$c);
$array[$tmp[0]]=$tmp[1];
}
$new[$k]=$array;
}
print_r($new);
7. 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) 就可以實現
8. PHP 多個數組的排列組合
$a = array(1,2,3,4,5,6,7);
$b = array(1,2,3);
$c = array(1,2,3,4,5,6,7,8,9,10);
$d = array($a,$b,$c);
//計算每一個數組的長度
$len = 1;
$arrLen = count($d); //需要排列數組有多少個
$recIndex = null; //記錄當前該取的位置
//foreach 計數
$count_3 = 0;
foreach ($d as $key => $value) {
$lenRec[$count_3] = count($value);
$len = $lenRec[$count_3]*$len;
$recIndex[] = 0;//第一次全部取第0個
$count_3++;
}
//算出% 的值
$count = 1;
foreach ($lenRec as $key => $value) {
$moloVal = 1;
if($arrLen == $count){
$molo[] = count($d[$arrLen-1]); //等於最後一個的長度
}else{
$count_1 = 1;
foreach ($lenRec as $index => $item) {
$count_1 > $count && $moloVal = $moloVal*$item;
$count_1 ++;
}
$molo[] = $moloVal;
}
$count ++;//為了防止$d key是有值的 不是自然序列 需要計數
}
$i = 1;
while ( $i <= $len) {
$html = '';
$count_2 = 0;// 取模
$temp = '';
foreach ($d as $value) {
$html .= $value[$recIndex[$count_2]%$lenRec[$count_2]].",";
$count_2 ++;
}
echo $html."<br>";
foreach ($molo as $key => $value) {
if($i%$value == 0 && $key < $arrLen - 1 ){
$recIndex[$key] = $recIndex[$key] +1;
}
if($key == $arrLen - 1){
if($i%$value == 0){
$recIndex[$key] = 0;
}else{
$recIndex[$key] = $recIndex[$key] +1;
}
}
}
$i ++;
//改變獲取的位置
}
9. 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,是一維數組,而且更加方便。
10. php 數組分割成多個數組
1.系統函數:
array_chunk() 把一個數組分割為新的數組塊
array_slice() 返回數組中被選定的部分等,更多的參考w3school
http://www.w3school.com.cn/php/php_ref_array.asp,程序員要學會用手冊
2.自定義函數:
當系統函數不能滿足實際需求時,根據實際的需求,自己重新定義函數
function(){}
3、 計算參數的數組:
參數1是傳入數組,參數2是每個分數組元素數量//調用方法返回的是二維數組,可以用數組下標取出你需要的一維數組。
function arr_oper ( $arr, $num ) {
$count = count ( $arr );
for ( $i = 0; $i < $count / $num; $i ++ ) {$return_arr[$i] = array_slice ( $arr, $num * $i, $num }
4、利用:$sliceArr = arr_oper( $arr, 1000 );的公式:
$sliceArr[0],$sliceArr[1]......
這個根據你的要求弄就行,因為方法只能返回一個數組,所以我把拆分之後的幾個子數組合成了一個數組一起return了。
這個方法會比較靈活,比如我把3000個元素的數組,500個一個拆分,就會返回一個有6個子數組的數組。