PHP

PHP. Почему нельзя применять функцию count() к строкам? Ведь строка это тот же массив

Тимур Хасанов
Тимур Хасанов
1 202
1. Строка в PHP - это НЕ массив, а местами похожий на массив отдельный тип данных.

2. И каким образом count будет высчитывать длину строки в кодировке, например, UTF-8? Для каждой из кодировок ANSII, UTF-8, UTF-16, UTF-32 требуется свой собственный алгоритм вычисления длины строки.

3. Объединять в одной функции по сути разные (хотя и похожие для дилетанта) вещи - это заведомо замедлять работу этой функции (сначала она должны определить, массив перед нами, или строка - и на это тратится время).
Андрей Климов
Андрей Климов
75 967
Лучший ответ
Тимур Хасанов спасибо за помощь мне, дурачку :)
Артур А чел, да ты тему сечешь!
Тимур Хасанов я знаю об этой функции, просто не понимаю почему не работает count, и почему цикл foreach тоже нельзя к строкам применять
С чего ты взял, что строка - это массив? Если ты смущен таким обращениям к строкам:
str[0]
то это просто синтаксис похожий. Разрабы так шутят. Как в JavaScript - массивы вроде бы объекты, а на самом деле ничего общего. Хотя typeof выведет Object
Это первое, а во вторых, с чего ты взял, что нельзя применять. Возьми да примени. Результат будет не совсем ожидаемый... ну так и нехер применять. Примени count еще и к числам, булевым типам, null
Ярослав Панин
Ярослав Панин
4 226
Володя Антонов "С чего ты взял, что строка - это массив? Если ты смущен таким обращениям к строкам:
str[0]
то это просто синтаксис похожий. Разрабы так шутят. "

Rollzed, скажи мне по секрету - У тебя действительно всё настолько плохо с головой или ты просто троллишь?
А разве count() применяется к массивам? :)
Запусти следующий код и посмотри, сколько занимает памяти "массив" с десятью интами.

$m = memory_get_usage();

$ht = range(1,10);

echo memory_get_usage() - $m;
echo ' bytes';
Ярослав Панин Ты дебил? И где тут count в коде? Тут range. Или вы все совсем обкурились? И при чем тут memory_get_usage?
Масив - это набор переменных (строк). Строка, она одна))
Светозар Приходько В си строка — это массив байтов.
Для строк strlen и mb_strlen