php學習筆記 數組的聲明與遍歷
來源:程序員人生 發布時間:2014-03-01 20:27:41 閱讀次數:3618次
在php中數組是一個非常重要的數據存儲類型,本文章主要是介紹了數據創建與數組刪除及遍歷查詢數據值輸出,下面一起來看看。
數組的聲明
1、直接賦值的方式聲明數組
$數組變量名[索引值] = 資料內容 //其中索引值(下標)可以是一個字符串或數字
但有的時候,我們也可以直接給數組賦值,并不填寫“索引值”,那第此時,數組的下標就會自動以數字0開始增加。
$數組變量名[] = 資料內容 //其中索引值(下標)可以是一個字符串或數字
2、使用array()語言結構新建數組
在實際使用中我們可以用array()語言結構來新建一個數組,并初始化數組。
$數組變量名=array( key1 => value1, key2 => value2, ...... ,keyN => valueN );
當然,像上面我們并不一定就這樣,我們有的時候會像下面這樣來做:(區別在于索引值為數字)
$數組變量名=array( value1, value2, ...... , valueN );
3、多維數組的聲明
多維數組其實也就是在數組里面再次存放數組。如下:
- $content = array (
- array(1,'高某','A公司','北京市'),
- array(2,'高某1','B公司','北京市'),
- array(3,'高某','C公司','北京市')
- );
數組的遍歷
1、使用for語句循環遍歷數組
在其它的編程語言中,數組的遍歷通常都是使用for循環語句,通過數組的下標來訪問數組中每個成員元素,但要求數組的下標必須是連續的數字索引。而在PHP中,不僅可以指定非連續的數字索引值,而且還存在以字符為下標的關聯數組。所以在PHP中,其實是很少使用for語句來遍歷數組。下面來曬一個例子給大家看一下,大家應該不會陌生,實例代碼如下:
- <?php
-
- $contact=array(1,"高某","A公司","北京市","(015)9582451","gao@php.com");
-
- echo '<table border="1" width="600" align="center">';
- echo '<caption><h1>聯系人列表</h1></caption>';
- echo '<tr bgcolor="#dddddd">';
-
-
- echo '<th>編號</th><th>姓名</th><th>公司</th><th>地址</th><th>電話</th><th>EMAIL</th>';
- echo '</tr><tr>';
- for($i=0;$i<count($contact);$i++){
- echo '<td>'.$contact[$i].'</td>';
- }
- echo '</tr></table>';
- ?>
遍歷多維數組時,要使用循環嵌套逐層進遍歷。在此就不用代碼列出來了。
2、使用foreach語句遍歷數組
既然for循環語句在PHP中并不常用,那么就讓我們來看一下foreach到底有什么可取之處吧!
foreach語句有兩種語法格式,第二種比較次要但卻是第一種有用的擴展。
第一種語法格式:
- foreach(array_expression as $value ){
-
- 循環體
-
- }
第二種語法模式:
- foreach(array_expression as $key => $value){
-
- 循環體
-
- }
3、聯合使用list()、each()、和while()、循環遍歷數組
each()函數
each()函數需要傳遞一個數組作為參數,返回數組中當前元素的鍵/值對,并向后移動數組指針到下一個元素的位置。鍵/值對被返回為帶有四個元素的關聯和索引混合的數組,鍵名分別為0、1、key和value。其中鍵名0和key對應的值是一樣的,是數組元素的鍵名,1和value則包含有數組元素的值。如果內部指針越過了數組的末端,則each()返回FALSE。each()函數的使用如下所示,代碼如下:
- <?php
-
- $contact=array("ID"=>1,"姓名"=>"高某","http://www.phpfensi.com公司"=>"A公司","地址"=>"北京市");
-
- $id=each($contact);
- print_r($id);
- $name=each($contact);
- print_r($name);
- $company=each($contact);
- print_r($company);
- $address=each($contact);
- print_r($address);
- $no=each($contact);
- var_dump($no);
-
- ?>
list()函數
這不是真正的函數,而是PHP的語言結構。list()用一步操作給一組變量進賦值,即把數組中的值賦給一些變量。list()僅能用于數字索引的數組并假定數字索引從0開始。語法格式如下所示:
list(mixed varname,mixed ...)=array_expression //list()語句的語法格式
list()語句和其它函數在使用上有很大的區別,并不是直接接收一個數組作為參數。而是通過“=”去處符以賦值的方式,將數組中每個元素的值,對應的賦給list()函數中的每個參數。list()函數又將它中的每個參數轉換為直接可以在腳本中使用的變量。使用方法如下,實例代碼如下:
- <?php
- $info=array('coffee','brown','caffeine');
-
- list($drink,$color,$power)=$info;
- echo "$drink is $color and $power makes it special.n";
-
- list($drink, ,$power)=$info;
- echo "$drink has $power.n";
-
- list(,,$power)=$info;
- echo "I need $power!n";
- ?>
通過上例了解list()函數的用法之后,將each()函數和list()函數結合起來使用。代碼如下:
- <?php
- $contact=array("ID"=>1,"姓名"=>"http://www.111Cn.Net","公司"=>"A公司","地址"=>"北京市");
- list($key,$value)=each($contact);
- echo "$key=>$value";
- ?>
while()循環遍歷數組
while()循環的語法格式如下:
- while( list($key,$value) = each(array_expressin) ){
- 循環體;
- }
使用這種組合改寫前面使用foreach遍歷過的一維數組,代碼如下所示:
- <?php
-
- $contact=array("ID"=>1,
- "姓名"=>"高某",
- "公司"=>"A公司",
- "地址"=>"北京市",
- "電話"=>"(010)987665432",
- "EMAIL"=>"gao@php.com"
- );
-
- echo '<dl>一個聯系人信息:';
- while(list($key,$value) = each($contact) ){
- echo "<dd>$key:$value</dd>";
- }
- echo '</dl>';
- ?>
4、數組內部指針控制函數遍歷數組
對于數組指針的控制PHP提供了以下幾個內部函數可以利用。
》》current():是取得目前指針位置的內容資料
》》key():用來讀取目前指針所指向資料的索引值
》》next():將數組中的內部指針移動到下一個單無
》》prev():將數組的內部指針倒回一位
》》end():將數組的內部指針向最后一個元素
》》reset():將目前指針無條件移至第一個索引位置
這些函數的參數都只有一個,就是要操作的數組本身。在下面的示例中,將使用這些數組指針函數控制數組中元素的讀取順序,代碼如下所示:
- <?php
-
- $contact = array("ID"=>1,
- "姓名"=>"高某",
- "公司"=>"A公司",
- "地址"=>"北京市",
- "電話"=>"(010)98765432",
- "EMAIL"=>"gao@php.com"
- );
-
-
- echo '第一個元素:'.key($contact).'=>'.current($contact).'<br>';
- echo '第一個元素:'.key($contact).'=>'.current($contact).'<br>';
-
- next($contact);
- next($contact);
- echo '第三個元素:'.key($contact).'=>'.current($contact).'<br>';
-
- end($contact);
- echo '最后一個元素:'.key($contact).'=>'.current($contact).'<br>';
-
- prev($contact);
- echo '最后第二個元素:'.key($contact).'=>'.current($contact).'<br>';
-
- reset($contact);
- echo '又回到了第一個元素'.key($contact).'=>'.current($contact).'<br>';
- ?>
數據排序
•sort() 函數用于對數組單元從低到高進行排序。
•rsort() 函數用于對數組單元從高到低進行排序。
•asort() 函數用于對數組單元從低到高進行排序并保持索引關系。
•arsort() 函數用于對數組單元從高到低進行排序并保持索引關系。
•ksort() 函數用于對數組單元按照鍵名從低到高進行排序。
•krsort() 函數用于對數組單元按照鍵名從高到低進行排序。
例子代碼如下:
- <?php
- $arr = array("b", "a", "c");
- sort($arr);
- print_r($arr);
- ?>
-
-
在本例中, $arr 數組單元被按照字母順序排序,而數組單元經過排序后,鍵值重新分配。
rsort()
PHP rsort() 函數行為與 sort() 相反,對數組單元進行由高到低排序,請參考 sort() 函數使用。
asort()
PHP asort() 函數用于對數組單元從低到高進行排序并保持索引關系,如果成功則返回 TRUE,失敗則返回 FALSE。
語法:bool asort( array &array [, int sort_flags] )
可選參數 sort_flags 用以改變排序的行為,具體參見 sort()。
實例代碼如下:
- <?php
- $arr = array("b", "a", "c");
- asort($arr);
- print_r($arr);
- ?>
-
-
注:本文內容參考于《細說PHP》中的數組部分,僅作學習之余的個人筆記。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈