2016-10-04 4 views
0

Vielleicht ist dies eine dumme Frage, aber ich verstehe nicht, was mit der Länge der Variable los ist, was passiert in jedem Schritt?Was ist mit der Länge Variable in diesem Beispiel passiert, PHP

$text = 'John'; 
$text[10] = 'Doe'; 

echo strlen($text); 
//output will be 11 

Warum wird var_dump($text) Anzeige string(11) "John D"? Warum wird es kein vollständiger Name sein? John Doe?

Kann jemand diesen Moment erklären?

Antwort

5
// creates a string John 
$text = 'John'; 

// a string is an array of characters in PHP 
// So this adds 1 character from the beginning of `Doe` i.e. D 
// to occurance 10 of the array $text 
// It can only add the 'D' as you are only loading 1 occurance i.e. [10] 
$text[10] = 'Doe'; 

echo strlen($text); // = 11 

echo $text; // 'John  D` 
// i.e. 11 characters 

tun, was Sie können Verkettung wie diese

$text = 'John'; 
$text .= ' Doe'; 

Wenn Sie wirklich alle wollen die Räume

$text = 'John'; 
$text .= '  Doe'; 

Oder vielleicht

$text = sprintf('%s  %s', 'John', 'Doe'); 
+0

Vielen Dank für eine schnelle Antwort. Können Sie sagen, warum nur ein Buchstabe hinzugefügt wird, das D, warum nicht das ganze "Doe"?) – Siada

+1

Es kann nur das 'D' addieren, da Sie nur 1 Vorkommen laden, dh [10] dh es ist nur Platz drin '$ text [10]' für das erste Zeichen von 'Doe' – RiggsFolly

0

Strings zugegriffen verwenden möchten als Arrays, das ist Was machst du mit $ text [10]. Wegen der internen Funktionen wird $text[10] = 'Doe'; das 11. Zeichen auf 'D' gesetzt.

Sie müssen eine andere Art von String-Verkettung verwenden.

http://php.net/manual/en/function.sprintf.php