php數組定義與變數銷毀和一維數組排序_PHP教程

來源:互聯網
上載者:User
本文章先是介紹關於php中的數組定義與數組的銷毀,之後再用一個執行個體來說明一維資料的排序方法,有需要的朋友可以參考一下,希望對大家有用。

PHP數組的定義

代碼如下 複製代碼

……
$array = array('one','two','three');
var_dump($array);
……

在本程式碼片段的第一行,定義了一個一維數組$array,第二行的時候我們格式化輸出了這個數組,結果是這樣的:

代碼如下 複製代碼

array(3) {
[0]=>
string(3) "one"
[1]=>
string(3) "two"
[2]=>
string(5) "three"
}

現在兄弟解釋一下這個輸出結果,首先這個數組的輸出結果的第一行,
array(3)告訴我們這是個有三個元素的數組,
首先0號元素是一個長度為3的字串(string(3))…
篇幅關係剩下兩個就不說了吧,吼吼……,這說明什麼呢?這說明在PHP中如果我們不為數組指定下標的話,那麼他就自己自作主張的從零開始給我們弄一個下標出來——也就是PHP數組中的鍵名;再看看下邊的例子:

代碼如下 複製代碼
……
$array = array('one',”hello”=>'two','three');
var_dump($array);

……這一次我們定義數組的時候,為第二個元素指定了下標(從此以後,在本文中就叫做鍵名了,下標有點含糊不清!),第二個元素指定了鍵名(hello),咱們再看看輸出結果:

代碼如下 複製代碼

array(3) {
[0]=>
string(3) "one"
["hello"]=>
string(3) "two"
[1]=>
string(5) "three"
}

我想你也像我一樣看到了一個很智能的現象,第一個元素的鍵名還是0——這個我們可以理解,因為我們沒有指定,而PHP數組必須要有一個鍵名,PHP就自作主張從零開始創立了一個鍵名;第二個元素的時候,我們指定了鍵名,PHP就尊重我們的意見用了這個鍵名;複雜的事情在第三個元素,

第三個元素,看起來也很簡單,我們沒有指定鍵名,PHP自動的把最大整數鍵名加上1,作為了鍵名。但是大家想過沒有,如果我們把第一個元素的鍵名修改為“-5”,第二個元素鍵名不變,結果會是什麼呢?我們拭目以待:

代碼如下 複製代碼
……
$array = array(-5=>'one',"hello"=>'two','three');
var_dump($array);
……

如果你想當然的認為,第三個元素的鍵名應該是-4,那麼我告訴你在PHP4.3.0之前這個想法是對的,但是之後就錯了,現在也就是PHP4.3.0之後的版本你將看到如下結果:

代碼如下 複製代碼

array(3) {
[-5]=>
string(3) "one"
["hello"]=>
string(3) "two"
[0]=>
string(5) "three"
}

是的第三個元素是從0開始的,也就是不管你的負數有多小,下一個元素要是讓PHP來定義鍵名的話,那麼他就是從0開始——記住這個地方說的是,在現有的鍵名中如果最大的依然是個負數,不管負數有多小,PHP也是從零開始下一個鍵名。

PHP數組的銷毀很簡單,像銷毀其他變數一樣。
銷毀整個數組:unset($array)
銷毀數組中的一個元素:unset($array[-5])

不管在現實生活中還是程式世界裡,順序總是很重要——真不敢想象一個沒有順序的世界會什麼樣子!PHP數組也不例外。PHP提供了四組針對PHP數組進行排序的函數,前三種都是針對一維數組的,我們先說這三種,第四種對多維陣列的排序在下一篇文章中說,那個有點複雜。

第一組 :sort 和 rsort ,按照PHP數組索引值的順序asc和逆序desc進行排序,同時破壞原來數組的索引關係——其實是刪除索引之後重建立立從0開始的數字索引。看一下常式:


代碼如下 複製代碼

$a = array("a"=>1,2);
sort($a);
var_dump($a);

rsort($a);
var_dump($a);
?>

看一下第一個輸出結果,第一個輸出:
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
第二個輸出:
array(2) {
[0]=>
int(5)
[1]=>
int(4)
}


發現沒有我們原來定義的索引a哪裡去了?哪裡去了?可以肯定的說是被他們無情的刪除了,你要是對原來的索引關係並不在意的話,可以使用他們!

第二組函數:asort 和 arsort ,這兩個函數就比較厲害一點了,只要他們可以保留數組原有的索引關係,把上例的sort 和 rsort 分別用這兩個函數替換一下,看運行結果:

代碼如下 複製代碼
array(2) {
["a"]=>
int(1)
[0]=>
int(2)
}
array(2) {
[0]=>
int(2)
["a"]=>
int(1)
}

這個一看就明白的,不用說了吧!

第三組PHP數組排序函數:krsort 和 ksort 這兩個不同於以上兩組,這兩函數是對鍵名進行排序的,大家可以把上例的函數替換成這兩個,看看具體運行結果,這裡也不說了,不然這個文章寫的就太長了,怕有些兄弟沒有耐心看到本文的重點,雖然重點就在下邊!

通過自訂函數對PHP數組進行排序,有三個函數分別是:
uasort 通過自訂函數對PHP數組的索引值進行排序,並且保留原來的索引關係。
uksort 通過自訂函數對PHP數組的鍵名進行排序,並且保留原來的索引關係。
usort通過自訂函數對PHP數組的索引值進行排序,並且刪除原來的索引關係,從零開始建立新的索引。

這個地方當然需要一個例子:


輸出結果:
array(4) {
[0]=>
int(1)
[3]=>
int(5)
[1]=>
int(4)
[2]=>
int(3)
}

,呵呵……是不是比不排序還亂呢?我們這裡只是示範了使用的方法而已,具體你用到的時候自己搞吧!你要是不對這些數值進行操作之後再比較,例如我們這裡:
$a+=1;
$b+=3;//改變這些值之後進行比較


在PHP手冊中,一共定義了74個數組函數,涵蓋了PHP數組的定義,賦值,排序,數值操作,比較,以及對數組的鍵名,索引值反轉……等等我們幾乎能夠想到的所有功能。有需要的同學可以去參考一下啊

http://www.bkjia.com/PHPjc/631293.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631293.htmlTechArticle本文章先是介紹關於php中的數組定義與數組的銷毀,之後再用一個執行個體來說明一維資料的排序方法,有需要的朋友可以參考一下,希望對大家有...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.