В php строки не заканчиваются нулевым байтом. Например, $s = 'a';echo $s[1];
выдает предупреждение (поэтому не стоит тестировать с $a[$length] == ""
). Кроме того, строки php могут содержать нулевые байты - это действительно байтовые массивы.
Однако вы можете использовать языковую конструкцию isset
, чтобы проверить, будет ли при чтении значения $a[$length]
выдано предупреждение:
$a = "a\0b\0c";
for ($length = 0;isset($a[$length]);$length++) ;
echo $length; // 5