2016-06-29 3 views
1

Wenn Sie auf ein Element innerhalb einer PHP-Zeichenfolge wie ein Array verweisen, können Sie mit eckigen Klammern [] eine Zahl wie [2] verwenden, um ein bestimmtes Zeichen aus der Zeichenfolge auszuwählen. Wenn Sie jedoch einen String-Index wie ["example"] verwenden, gibt es immer das gleiche Ergebnis wie [0] zurück.

<?php 
$str="Hello world."; 
echo $str; // Echos "Hello world." as expected. 
echo $str[2]; // Echos "l" as expected. 
echo $str["example"]; // Echos "H", not expected. 

$arr=array(); 
$arr["key"]="Test." 
echo $arr["key"]; // Echos "Test." as expected. 
echo $arr["invalid"]; // Gives an "undefined index" error as expected. 
echo $arr["key"]; 

Warum gibt es das gleiche Ergebnis wie [0] zurück?

+0

'$ str [ "Beispiel"]' 0 zurück von ' $ str = "Hello world." 'wodurch es den ersten Buchstaben" H "zurückgibt –

+0

Siehe hier warum: http://StackOverflow.com/questions/17193597/strings-as-arrays-in-php – mitkosoft

+0

' $ str [ "example"] '=' $ str ["0"] wegen example' und hense h wurde empfangen –

Antwort

7

PHP verwendet Typ Jonglieren, um Variablen eines nicht passenden Typs in einen passenden zu konvertieren. In Ihrem Fall erwartet PHP, dass Ihr Index ein numerischer Wert ist, also eine ganze Zahl. Wenn Sie eine Zeichenfolge eingeben, versucht es, sie als Zahl zu analysieren. Wenn nicht möglich, wird standardmäßig Null verwendet.

Nebenbei bemerkt: Wenn Sie ihm eine Zeichenfolge wie "9penguins" geben, erhalten Sie einen 9.

PHP Manual auf Typen Jonglieren: http://php.net/manual/de/language.types.type-juggling.php

+2

Nitpick: Es ist * immer * "möglich", eine Zeichenfolge an eine Zahl zu übergeben. Das Ergebnis kann einfach "0" sein, wenn keine andere nützliche Zahl in der Zeichenfolge gefunden wurde. → http://php.net/manual/en/language.types.string.php#language.types.string.conversion – deceze