Вопрос интервью о строках PHP

PHP

Давайте посмотрим на простой фрагмент кода:

<?php
$str = 'php';
$str['name'] = array('dogstart');
var_dump($str);

Серьезно, что выводит приведенный выше код? Если у вас уже есть ответ, то вы можете закрыть эту статью, в противном случае давайте пошагово посмотрим, каким будет конечный результат.

Базовый обзор

Прежде чем приступить к вопросу, давайте подумаем о типах переменных, которые существуют в php:

  • Логический логический тип
  • Целое число
  • Поплавок поплавок
  • Строка Строка
  • Массив Массив
  • Объект Object
  • Тип ресурса ресурса
  • NULL
  • Обратный/вызываемый тип

Справочная документация:Тип PHP

Реализация строки в PHP представляет собой массив байтов плюс целое число, указывающее длину буфера (обратите внимание, что PHP не может изменить длину исходной строки).

Давайте посмотрим на нашу тему дальше.Первая строка кода обычная, а ключевая часть находится во второй строке:

$str['name'] = array('dogstart');

Давайте сначала посмотрим на код слева от знака равенства.Поскольку строки PHP состоят из массивов, мы знаем, что ключи массивов в PHP могут быть целыми числами и строками, но в строках мы можем получить доступ к каждой строке только через целое число. нижние индексы.символы, поэтому «имя» в этом месте в конечном итоге будет преобразовано в число:

intval('name');

существуетPHP-документацияОпределено в , когда строка преобразуется в число, начало строки определяет преобразованное значение. Если строка начинается с допустимого числового значения, используется это значение, в противном случае — 0.

Таким образом, окончательный результат приведенного выше кода равен 0. Используя метод подстановки в математике, вторая строка кода становится такой:

$str[0] = array('dogstar');

Давайте взглянем на код в правой части второй строки.Поскольку в строках могут существовать только строки, код справа будет преобразован в строки:

strval(array('dogstar'));

Результатом преобразования является «Массив», а вторая строка кода становится:

$str[0] = 'Array';

Поскольку длина строки фиксирована, в этом месте может храниться только один символ, поэтому, когда символы в массиве присваиваются $str[0], будет сохранен только первый символ, а остальные будут отброшены. . Итак, наш код становится:

<?php
$str = 'php';
$str[0] = 'A';
var_dump($str);

В это время вы можете сразу увидеть, что окончательный вывод — «Ahp».