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);
?>