Heim  >  Artikel  >  php教程  >  Datenstruktur - Array (Array)

Datenstruktur - Array (Array)

WBOY
WBOYOriginal
2016-10-18 08:41:392139Durchsuche

Datenstruktur - Array (Array)
Arrays sind Strukturen, die Daten zusammenhängend speichern und auf die durch Indizierung zugegriffen werden kann. Verwechseln Sie sie nicht mit PHP-Arrays: PHP-Arrays werden tatsächlich als geordnete Hash-Tabellen implementiert.

Hauptunterschiede zwischen SplFixedArray und PHP-Arrays:

SplFixedArray ist ein Standard mit fester Länge (Standardarray) und erlaubt nur Ganzzahlen innerhalb des Bereichs als Indizes. Der Vorteil besteht darin, dass es eine schnellere Array-Implementierung ermöglicht.
PHP-Arrays werden tatsächlich als geordnete Hash-Tabellen (eine Sammlung von Daten) implementiert. <?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> ?>
/*
Konstruieren Sie ein neues festes Array mit einer angegebenen Länge von 5
*/
$array = new SplFixedArray(5);

/*
Weisen Sie dem angegebenen Index
einen Wert zu */
$array[1] = 2;
$array[4] = "foo";

/*
Datenstruktur:
object(SplFixedArray)#1 (5) {
[0]=>
NULL
[1]=>
int(2)
[2]=>
NULL
[3]=> NULL [4]=> string(3) „foo“ } */ var_dump($array); /* Die Array-Länge beträgt 5 */ var_dump($array->count()); /* Erhöhen Sie die Größe des Arrays auf 10 */ $array->setSize(10); /* Mit zunehmender Länge des Arrays ändern sich die Originaldaten nicht object(SplFixedArray)#1 (10) { [0]=> NULL [1]=> int(2) [2]=> NULL [3]=> NULL [4]=> string(3) „foo“ [5]=> NULL [6]=> NULL [7]=> NULL [8]=> NULL [9]=> NULL } */ var_dump($array); /* Weisen Sie dem erweiterten Array einen Wert zu */ $array[9] = "asdf"; /* Verkleinern Sie das Array auf Größe 2 Speichert zwei Längen vom Anfang des Index object(SplFixedArray)#1 (2) { [0]=> NULL [1]=> int(2) } */ $array->setSize(2); /* Die folgende Zeile löst eine RuntimeException aus: Index ist ungültig oder außerhalb des gültigen Bereichs */ versuche es mit { $array["username"]="jack"; } Catch(RuntimeException $re) { /* RuntimeException: Index ungültig oder außerhalb des gültigen Bereichs Indizes können nur Ganzzahlen sein */ echo „RuntimeException: „.$re->getMessage().“n“; } versuche es mit { $array[-1]="jack"; } Catch(RuntimeException $re) { /* RuntimeException: Index ungültig oder außerhalb des gültigen Bereichs Der Index ist ungültig */ echo "RuntimeException: ".$re->getMessage()."n"; } versuche es mit { $array[5]="jack"; } Catch(RuntimeException $re) { /* RuntimeException: Index ungültig oder außerhalb des gültigen Bereichs Der Index überschreitet die Array-Länge */ echo "RuntimeException: ".$re->getMessage()."n"; } /* Arraygröße anzeigen getSize/count */ echo $array->getSize(); ?> <🎜> $data=[1 => 1, 0 => 2, 3 => $sfa = SplFixedArray::fromArray($data); /* object(SplFixedArray)#1 (4) { [0]=> int(2) [1]=> int(1) [2]=> NULL [3]=> int(3) } */ var_dump($sfa); $data=[1 => 2, true =>5];$sfa = SplFixedArray::fromArray($data);

/*
1 wahr wird in 1 umgewandelt und die Daten mit Index 1 werden in 3 geändert
2 Der ursprüngliche Index wird standardmäßig gespeichert und der Index beginnt bei 0. Wenn die Daten nicht vorhanden sind, ist der Standardwert NULL
object(SplFixedArray)#2 (6) {
[0]=>
NULL
[1]=>
int(3)
[2]=>
int(2)
[3]=>
NULL
[4]=>
NULL
[5]=>
int(5)
}
*/
var_dump($sfa);

$data=[1 => 2, true =>5];
$sfa = SplFixedArray::fromArray($data,false);

/*
1 Versuchen Sie, den im ursprünglichen Array verwendeten numerischen Index zu speichern. Der Standardwert ist wahr;
2 Wenn der ursprüngliche numerische Index nicht gespeichert wird, wird ein Array ungleich NULL zurückgegeben

object(SplFixedArray)#1 (3) {
[0]=>
int(3)
[1]=>
int(2)
[2]=>
int(5)
}

*/
var_dump($sfa);


$data=[1 => 1, 'a' => 2, true => /*
Der Index muss eine Ganzzahl
sein Schwerwiegender Fehler: Nicht abgefangene Ausnahme „InvalidArgumentException“ mit der Meldung „Array darf nur positive Ganzzahlschlüssel enthalten“
*/
//$sfa = SplFixedArray::fromArray($data);

?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn