Давайте посмотрим на простой фрагмент кода:
<?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».