首頁  >  文章  >  php教程  >  資料結構-陣列(數組)

資料結構-陣列(數組)

WBOY
WBOY原創
2016-10-18 08:41:392137瀏覽

資料結構-陣列(數組)
數組是一種以連續方式儲存資料的結構,可透過索引存取。 不要將它們與PHP數組混淆:PHP數組實際上實現為有序哈希表。

SplFixedArray和PHP數組之間的主要區別:

SplFixedArray是固定長度的標準(標準陣列),並且只允許範圍內的整數作為索引。 優點是它允許更快的陣列實現。
PHP數組實際上實作為有序哈希表(一組資料的集合)。 <?php <br /> <br> /*<br> 建構一個新的固定數組,指定長度為5<br> */<br> $array = new SplFixedArray(5);<br> <br> /*<br> 為指定的索引賦值<br> */<br> $array[1] = 2;<br> $array[4] = "foo";<br> <br> /*<br> 資料結構:<br> object(SplFixedArray)#1 (5) {<br>   [0]=><br>   NULL<br>   [1]=><br>   int(2)<br>   [2]=><br>   NULL<br>   [3]=><br>   NULL<br>   [4]=><br>   string(3) "foo"<br> }<br> */<br> var_dump($array);<br> <br> /*<br> 數組長度為5<br> */<br> var_dump($array->count());<br> <br> /*<br> 將陣列的大小增加到10<br> */<br> $array->setSize(10);<br> <br> /*<br> 長度增加的數組,原始資料不會改變<br> object(SplFixedArray)#1 (10) {<br>   [0]=><br>   NULL<br>   [1]=><br>   int(2)<br>   [2]=><br>   NULL<br>   [3]=><br>   NULL<br>   [4]=><br>   string(3) "foo"<br>   [5]=><br>   NULL<br>   [6]=><br>   NULL<br>   [7]=><br>   NULL<br>   [8]=><br>   NULL<br>   [9]=><br>   NULL<br> }<br> <br> */<br> var_dump($array);<br> <br> /*<br> 為擴充長度後的陣列賦值<br> */<br> $array[9] = "asdf";<br> <br> <br> /*<br> 將陣列縮小到2的大小<br> 將從索引開始處,保存兩個長度<br> object(SplFixedArray)#1 (2) {<br>   [0]=><br>   NULL<br>   [1]=><br>   int(2)<br> }<br> */<br> $array->setSize(2);<br> <br> <br> <br> /*<br> 以下行拋出一個RuntimeException:索引無效或超出範圍<br> */ <br> try {<br>     $array["username"]="jack";<br> } catch(RuntimeException $re) {<br>     /*<br>     RuntimeException: Index invalid or out of range<br>     索引只能是整數<br>     */<br>     echo "RuntimeException: ".$re->getMessage()."n"; <br> }<br> <br> try {<br>     $array[-1]="jack";<br> } catch(RuntimeException $re) {<br>     /*<br>     RuntimeException: Index invalid or out of range<br>     索引不合法<br>     */<br>     echo "RuntimeException: ".$re->getMessage()."n";<br> }<br> <br> try {<br>     $array[5]="jack";<br> } catch(RuntimeException $re) {<br>     /*<br>     RuntimeException: Index invalid or out of range<br>     索引超出陣列長度<br>     */<br>     echo "RuntimeException: ".$re->getMessage()."n";<br> }<br> <br> /*<br> 查看數組大小<br> getSize/count  <br> */<br> echo $array->getSize();<br> ?><?php <br /> <br> $data=[1 => 1, 0 => 2, 3 => 3];<br> <br> $sfa = SplFixedArray::fromArray($data);<br> <br> /*<br> object(SplFixedArray)#1 (4) {<br>   [0]=><br>   int(2)<br>   [1]=><br>   int(1)<br>   [2]=><br>   NULL<br>   [3]=><br>   int(3)<br> }<br> */<br> var_dump($sfa);<br> <br> $data=[1 => 1, 2 => 2, true => 3,5=>5];<br>$sfa = SplFixedArray::fromArray($data);<br> <br> /*<br> 1 true轉換為1,索引為1的資料會被改為3<br> 2 預設保存原始索引,而且索引從0開始,資料不存在,則預設為NULL<br> object(SplFixedArray)#2 (6) {<br>   [0]=><br>   NULL<br>   [1]=><br>   int(3)<br>   [2]=><br>   int(2)<br>   [3]=><br>   NULL<br>   [4]=><br>   NULL<br>   [5]=><br>   int(5)<br> }<br> */<br> var_dump($sfa);<br> <br> $data=[1 => 1, 2 => 2, true => 3,5=>5];<br> $sfa = SplFixedArray::fromArray($data,false);<br> <br> /*<br> 1 嘗試保存原始數組中使用的數字索引。預設為true;<br> 2 如果不保存原始數字索引,那麼會傳回非NULL的陣列<br> <br> object(SplFixedArray)#1 (3) {<br>   [0]=><br>   int(3)<br>   [1]=><br>   int(2)<br>   [2]=><br>   int(5)<br> }<br> <br> */<br> var_dump($sfa);<br> <br> <br> $data=[1 => 1, 'a' => 2, true => 3];<br> /*<br> 索引必須是整數<br> Fatal error: Uncaught exception 'InvalidArgumentException' with message 'array must contain only positive integer keys'<br> */<br> //$sfa = SplFixedArray::fromArray($data);<br> <br> ?>

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn