В итоге происходит сравнениеStrings containing valid integers will be cast to the integer type.
if(0=='t') continue;
if(0==0) continue;
речь не о строках а о числах< > можно и со строками делать, и оно в общем работает "a" < "b"
То если лексикографическую сортировку строк без костылей в твоей версии PHP сделать будет невозможно.Не, если is_numeric с обоих сторон - переводим в числа
А сейчас она без костылей?То если лексикографическую сортировку строк без костылей в твоей версии PHP сделать будет невозможно.
Не, если is_numeric с обоих сторон - переводим в числа, если хотя бы с одной стороны невалидное число - сравниваем как строки.
$ php -r 'for ($i = -2147483648, $m = 2147483647, $k = 0; $i < $m; $i++) if (is_numeric(pack("N", $i))) {$k++;} var_dump($k);'
int(40672)
Предполагается, что сам интерпретатор знает тип данных - string это или integer. По-этому при сравнении integer с integer никаких нежданчиков быть не должно. А вот сравнение integer со string при расчетах траектории ракет не используется, так что Китай может спасть спокойно, а деньги можно пропить.Если считать, что мы сравниваем случайные числа в big endian без unpack'а напрямую оператором <, то в 0.000000008967% случаев будет нежданчик в виде сравнения бинарей как чисел, записанных ASCII-символами.