Я знаю, что строки в php являются строками ….. но, например, я могу сделать
$str = 'String'; echo $str[0]; echo $str[1]; //result S t echo count($str) //result 1
Почему я могу ходить через них, как в массиве, но не могу сосчитать их счет? (Я знаю, что я могу использовать strlen ())
Потому что так оно и работает. Вы можете получить доступ к определенным байтовым смещениям, используя нотацию в виде скобок. Но это не означает, что строка является массивом, и вы можете использовать функции, которые ожидают на ней массивы. $string[int]
является синтаксическим сахаром для substr($string, int, 1)
, не более того, не что иное.
Поскольку строки не являются массивами. Они позволяют вам искать буквы, используя тот же синтаксис для вашего удобства, но это все.
Массивы также могут иметь ключи и могут быть отсортированы. Если строки были полными массивами, вы могли бы дать каждой букве ключ или отсортировать буквы в алфавитном порядке с помощью одной из функций массива.
Короче говоря: строка не является массивом, даже если крошечная часть их синтаксиса подобна.