Auf Array-Schlüssel per geschweifter Klammer zugreifen (Thema: PHP Beispiele)

Darstellung des Zugriffs auf Array-Elemente über geschweifte Klammern in PHP

Schnellübersicht
Eckige Klammern können beim Zugriff auf Array-Elemente durch geschweifte Klammern ersetzt werden: Statt $element = $array["schlüssel"] wird dann $element = $array{"schlüssel"} geschrieben.

1. Einleitung

Der Zugriff auf Array-Elemente über geschweifte Klammern (so wie in Perl) ist auch in PHP möglich. Dazu müssen nur die sonst üblichen eckigen Klammern durch geschweifte ersetzt werden. Entsprechend lautet die Syntax $element = $array{schlüssel}, wobei „schlüssel” ein möglicher Schlüssel im Array sein muss. Das kann entweder ein Integer oder ein String sein (Strings müssen in einfachen oder doppelten Anführungszeichen stehen), oder eine Variable, die wiederum einen String/Integer enthält. (Einige andere Datentypen sind auch möglich, werden aber letztlich in String/Integer konvertiert.) Die nachfolgenden Beispiele demonstrieren die Anwendung und weisen nach, dass die Syntax in PHP — zumindest derzeit — noch funktioniert.

Hinweis: Der Zugriff über geschweifte Klammern ist unüblich. Es sollten möglichst nur eckige Klammern verwendet werden.

2. Lesender Zugriff bei Integer-Schlüsseln

Der Zugriff auf Integer-Schlüssel eines Arrays über geschweifte Klammer ist identisch zum Zugriff über eckige Klammern — offensichtlich abgesehen davon, dass geschweifte statt eckige Klammern verwendet werden. Das nächste Beispiel demonstriert dies, indem ein Array mit drei Elementen erzeugt wird, auf welche wiederum lesend zugegriffen wird. (Die drei Elemente erhalten automatisch von PHP die Schlüssel 0, 1 und 2, da ihre Schlüssel nicht explizit angegeben wurden.)

PHP-Code: Auf Integer-Schlüssel eines Arrays über geschweifte Klammern zugreifen
<?php
	$arr = array('a', 'b', 'c');
	var_dump(
		$arr{0},
		$arr{1},
		$arr{2}
	);
?>

HTML-Code: Ausgabe
string(1) "a"
string(1) "b"
string(1) "c"


3. Lesender Zugriff bei String-Schlüsseln

In diesem Beispiel wird auf drei Elemente eines Arrays zugegriffen, welche Strings als Schlüssel haben. Auch hier bleibt im Wesentlichen alles gegenüber eckigen Klammern gleich.

PHP-Code: Auf String-Schlüssel eines Arrays über geschweifte Klammern zugreifen
<?php
	$arr = array('I' => 'a', 'II' => 'b', 'III' => 'c');
	var_dump(
		$arr{'I'},
		$arr{'II'},
		$arr{'III'}
	);
?>

HTML-Code: Ausgabe
string(1) "a"
string(1) "b"
string(1) "c"


4. Lesender Zugriff bei mehrdimensionalem Array

Auch bei mehrdimensionalen Arrays kann auf Elemente von Unterarrays zugegriffen werden, indem mehrere Schlüssel in geschweiften Klammern kombiniert werden.

PHP-Code: Auf mehrdimensionales Arrays über geschweifte Klammern zugreifen
<?php
	$arr = array(
		'a' => array('I' => 'aI', 'II' => 'aII'), 
		'b' => array('I' => 'bI', 'II' => 'bII')
	);
	var_dump(
		$arr{'a'}{'I'},
		$arr{'a'}{'II'},
		$arr{'b'}{'I'},
		$arr{'b'}{'II'}
	);
?>

HTML-Code: Ausgabe
string(2) "aI"
string(3) "aII"
string(2) "bI"
string(3) "bII"


5. Schreiben bei Integer-Schlüsseln

Genauso wie der lesende Zugriff ist auch der schreibende Zugriff auf Integer-Schlüssel über geschweifte Klammern erlaubt.

PHP-Code: Werte über geschweifte Klammern in Array schreiben (Integer-Schlüssel)
<?php
	$arr = array();

	$arr{0} = 'a';
	$arr{1} = 'b';
	$arr{2} = 'c';

	var_dump($arr);
?>

HTML-Code: Ausgabe
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}


6. Schreibender Zugriff auf String-Schlüssel

Ebenfalls funktioniert der schreibende Zugriff auf Elemente mit Strings als Schlüsseln problemlos.

PHP-Code: Werte über geschweifte Klammern in Array schreiben (String-Schlüssel)
<?php
	$arr = array();

	$arr{'I'} = 'a';
	$arr{'II'} = 'b';
	$arr{'III'} = 'c';

	var_dump($arr);
?>

HTML-Code: Ausgabe
array(3) {
  ["I"]=>
  string(1) "a"
  ["II"]=>
  string(1) "b"
  ["III"]=>
  string(1) "c"
}


7. Schreibender Zugriff bei mehrdimensionalen Arrays

Analog zum lesenden Zugriff bei mehrdimensionalen Arrays wird der schreibende über geschweifte Klammern durchgeführt:

PHP-Code: Werte über geschweifte Klammern in Array schreiben (mehrdimensionales Array)
<?php
	$arr = array();
	
	$arr{'a'}{'I'} = 'aI';
	$arr{'a'}{'II'} = 'aII';
	$arr{'b'}{'I'} = 'bI';
	$arr{'b'}{'II'} = 'bII';

	var_dump($arr);
?>

HTML-Code: Ausgabe
array(2) {
  ["a"]=>
  array(2) {
    ["I"]=>
    string(2) "aI"
    ["II"]=>
    string(3) "aII"
  }
  ["b"]=>
  array(2) {
    ["I"]=>
    string(2) "bI"
    ["II"]=>
    string(3) "bII"
  }
}


8. Zugriff auf Strings

In früheren PHP-Versionen war es üblich, auf einzelne Zeichen in einem String per geschweifter Klammern zuzugreifen. So wurde signalisiert, dass auf ein Zeichen und nicht auf ein Array-Element zugegriffen wurde. Inzwischen gilt diese Schreibweise als veraltet (deprecated) und sollte nicht mehr verwendet werden. Stattdessen ist es vorgesehen, dass nun auch bei Strings eckige Klammern Anwendung finden. Nichtsdestotrotz funktioniert die Syntax noch, wie das nachfolgende Beispiel zeigt.

PHP-Code: Zugriff auf Zeichen eines Strings über geschweifte und eckige Klammern
<?php
	$str = 'abc'; // String diesmal - kein Array!
	var_dump($str{0}, $str{1}, $str{2});
	var_dump($str[0], $str[1], $str[2]);
?>

HTML-Code: Ausgabe
string(1) "a"
string(1) "b"
string(1) "c"
string(1) "a"
string(1) "b"
string(1) "c"


Kommentare (0)

Von neu nach alt