1、list()
list() 和 array() 一樣,不是一個函數,而是一個語言結構,作用是為一組變量賦值。
PHP手冊中的介紹
使用詳情
<?php //假設現在想為$a $b $c三個變量賦值,采用info數組中的內容 $info = ['this is a','this is b','this is c']; list($a,$b,$c) = $info; print<<<EOT $a <br> $b <br> $c <br> EOT;
運行結果
2、each()
//實例代碼 遍歷$arr <?php $arr = ['a'=>'this is a','b'=>'this is b','c'=>'this is c']; while($tmp = each($arr)) { echo $tmp['key'].':'.$tmp['value'].'<br>'; }
運行結果:
3、數組指針操作
- current()
- key()
- next()
- prev()
- end()
- reset()
<?php /* 1 current(); //讀取指針位置的內容 2 key(); //讀取當前指針指向內容的索引值 3 next(); //將數組中的內部指針指向下一單元 4 prev(); //將數組內部指針倒回一位 5 end(); //將數組內部指針指向最后一個元素 6 reset(); //將目前指針指向第一個索引位置 */ $info = [ 'a' => 'this is a', 'b' => 'this is b', 'c' => 'this is c', 'd' => 'this is d' ]; echo key($info).':'.current($info).'<br>'; next($info); echo key($info).':'.current($info).'<br>'; end($info); echo key($info).':'.current($info).'<br>'; reset($info); echo key($info).':'.current($info).'<br>';
運行結果:
4、鍵值操作函數
- array_values($arr) - 獲得數組的值
- array_keys($arr[,$search[,$strict]]) - 獲得數組的鍵名
- array_flip($arr) - 數組中的值與鍵名互換(如果有重復前面的會被后面的覆蓋)
- array_search($goal,$arr[,$strict]) - 檢索給定的值,加true則是嚴格類型檢查
- array_reverse($arr[,$preserve_keys]) - 將數組中的元素翻轉(前后順序)
- in_array($goal,$arr[,$strict]) - 判斷值是否在數組中
- array_key_exists($key,$arr) - 檢索給定的鍵名是否存在數組中
- array_count_values($arr) - 統計數組中所有值出現的次數
- array_unique($arr[,$sort_flags]) - 刪除數組中重復的值
<?php $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; echo 'keys:<br>'; //輸出info數組的所有鍵 var_dump(array_keys($info)); echo '<br>'; echo 'values:<br>'; //輸出info數組的所有值 var_dump(array_values($info)); echo '<br>'; //轉換info數組 鍵值互換 echo 'flips:<br>'; var_dump(array_flip($info)); echo '<br>'; //搜索apple echo 'search:<br>'; echo 'apple key is :'.array_search('apple',$info); echo '<br>'; //元素翻轉 echo 'reverse:<br>'; var_dump(array_reverse($info)); echo '<br>'; //檢查元素 echo 'in?<br>'; echo 'blog is in $info? '.var_dump(in_array('blog',$info)); echo '<br>'; //檢查鍵 echo 'key in?<br>'; echo 'b is in $info? '.var_dump(array_key_exists('b',$info)); echo '<br>'; //統計值的出現次數 $info[] = 'blog'; $info[] = 'blog'; echo 'value count<br>'; var_dump(array_count_values($info)); echo '<br>'; //刪除重復的值 echo 'before unique<br>'; var_dump($info); echo '<br>after unique<br>'; var_dump(array_unique($info));
運行結果:
5、回調函數
- array_filter($arr[,$callback[,$flag]]) //使用回調函數過濾數組中的元素,如果回調返回true則當前的元素被包含到返回數組中
- array_walk($arr,$callback[,$userdata]) //回調函數處理數組,自定義函數要有兩個參數,本函數第三個參數可以作為回調第三個參數返回
- array_map($callback,$arr1[,$arr....]) //可以處理多個數組,每個數組的長度應該相同,傳入數組的個數和回調函數參數個數應該一致
示例數組:
$info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ];
array_filter();
PHP手冊參考:
//array_filter(); //不使用flag $filter_arr = array_filter($info,function($value){ return strlen($value) == 3; }); var_dump($filter_arr); echo '<br>'; //使用flag $filter_arr = array_filter($info,function($key){ return in_array($key,['a','c']); },ARRAY_FILTER_USE_KEY); var_dump($filter_arr); echo '<br>'; $filter_arr = array_filter($info,function($value,$key){ return in_array($key,['a','c']) && $value == 'apple'; },ARRAY_FILTER_USE_BOTH); var_dump($filter_arr); echo '<br>';
輸出結果:
array_walk();
PHP手冊參考:
//array_walk(); //不使用 userdata array_walk($info,function($value,$key){ echo "$key:$value "; }); echo "<br>"; //使用 userdata array_walk($info,function(&$value,$key,$userdata){ $value = $userdata.'-'.$value; },'php'); var_dump($info); echo "<br>";
輸出結果:
array_map();
PHP手冊參考:
//array_map(); //單個數組 array_map(function($n){ echo "$n "; },$info); echo "<br>"; //多個數組 $info_2 = [ 'e' => 'egg', 'f' => 'filco', 'g' => 'good' ]; array_map(function($n1,$n2){ echo "1:$n1-2:$n2 "; },$info,$info_2); echo '<br>';
運行結果:
6、數組分割
- array_slice($arr,$offset[,$length[,preserve_keys]]) //將數組中的一段取出(數組的分段)
- array_splice($arr,$offset[,$length[,$replacement]]) //將數組中的一段取出,返回的序列從原數組中刪除
- array_chunk($arr,$size[,$preserve_keys]) //將一個數組分割成多個
array_slice()
PHP手冊參考
array_splice()
PHP手冊參考:
array_chunk()
PHP手冊:
測試代碼:
<?php $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; //array_slice() echo 'array_slice:<br>'; print_r(array_slice($info,0,3)); echo '<br><hr>'; //array_splice(); echo 'array_splice:<br>'; echo '原數組:<br>'; print_r($info); echo '<br>'; //替換掉前兩位 $tmp = array_splice($info,0,2,['king','queen']); echo '替換后的數組:<br>'; print_r($info); echo '<br>'; echo '替換掉數組:<br>'; print_r($tmp); echo '<br><hr>'; //恢復原數組 $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; //array_chunk(); echo 'array_splice:<br>'; echo '替換后的數組:<br>'; $tmp = array_chunk($info,2); var_dump($tmp);
運行結果:
7、數組運算
- array_sum($arr) 元素求和
- array_merge($arr1[,$arr...]) 數組合並
- array_diff($arr1,$arr2[,$arr....]) 數組求差集 - 在arr1中但不在其他數組中的值
- array_intersect($arr1,$arr2[,$arr...]) 數組求並集 - 在arr1中且在其他數組中的值
測試代碼:
<?php $info = [ 'a' => 'apple', 'b' => 'blog', 'c' => 'cat', 'd' => 'dog' ]; $info_2 = [ 'e' => 'apple', 'f' => 'egg', 'g' => 'java', 'h' => 'cat' ]; $info_num = [120,10,1]; //array_sum echo 'array_sum:<br>'; echo array_sum($info_num); echo '<br>'; echo array_sum($info); //只對元素中的數值進行求和 echo '<br><hr>'; //array_merge echo 'array_merge:<br>'; print_r(array_merge($info,$info_2,$info_num)); echo '<br><hr>'; //array_diff - 返回在info中但不在其他arr中的值 echo 'array_diff:<br>'; print_r(array_diff($info,$info_2)); echo '<br><hr>'; //array_intersect - 返回在info中也在在其他arr中的值 echo 'array_intersect:<br>'; print_r(array_intersect($info,$info_2)); echo '<br><hr>';
運行結果:
8、數組的棧和隊列操作
- array_push($arr,$value[,$...]) - 將一個或多個單元壓入數組的末尾(入棧)
- array_pop($arr) - 彈出數組最后一個單元(出棧)
- array_shift($arr) - 將數組開頭的單元移出數組
- array_unshift($arr,$value[,$...]) - 在數組開頭插入一個或多個單元
9、數組的排序操作
- sort($arr[,$sort_flag]) - 從小到大,忽略鍵名
- rsort($arr[,$sort_flag]) - 從大到小,忽略鍵名
- asort($arr[,$sort_flag]) - 從小到大,保留鍵名
- arsort($arr[,$sort_flag]) - 從大到小,保留鍵名
- ksort($arr[,$sort_flag]) - 按鍵名正序排列
- krsort($arr[,$sort_flag]) - 按鍵名倒序排列
10、其他常用函數
- shuffle($arr) - 打亂數組