Со стороны JS? Когда вы отправляете в jQuery запрос, если вам вернулся не 20* ответ он автоматически считается потраченым и вызывается обработчик fail, куда статус передается вроде вторым аргументом. Для success все примерно так же, посмотрите в документации.
Ну и так, к слову, вместо обработчиков success/fail можно использовать promises - они в jQuery есть с версии 1,6 если мне память не изменяет.
@IgorO2, если это нужно для покрытия тестами (сомнительная проверка если честно), то значение мы знаем. Других кейсов я представить не могу, если честно.
@rock, это уже не совсем рекурсия. Это один из приемов разварачивания рекурсии. В других языках для этого заменяют стэк на очередь, по сути идея в том что бы прервать цепочку вызовов на определенном уровне и потом ее возобновить.
@IgorO2, я лишь указал на подходящее решение, для которого доступны примеры максимально похожие на то, что нужно автору вопроса. Если ему лень поразбираться - это не мои проблемы, в этом случае ему стоит обратиться на фриланс биржу.
@LestaD банальная формула вычисления расстояния у вас есть.
@ArtemDoink, как может формула (($imgR-$r)^2+($imgG-$g)^2+($imgB-$b)^2) не может быть меньше нуля по определению, ибо это сумма квадратов разностей. То есть это сумма всегда положительных чисел, максимум что там будет - корень из нуля, что так же будет ноль. Либо я чего-то не понимаю в математике.
Есть правда такая мысль что в PHP нету оператора степени. Оператор домика - это XOR а не возведение в степень. Используйте функцию pow.
@Borgia, из коробки - нет, уж больно специфичная задача. Обычно людей не волнует меняет ли кто-то переменные. В некоторых языках изменения можно запретить, что б наверняка (например в dlang можно определить immutable переменные, которые будут вычеслены во время компиляции и больше не будут меняться).
@Screamin-Jay, ну тогда вот тот минимум, который стоит знать:
HTTP, ООП (туда же паттерны, методологии и т.д.), Какой-нибудь MVC фреймворк на базовом уровне. Далее - пройдите собес и посмотрите чего вам не хватает.
Ну и так, к слову, вместо обработчиков success/fail можно использовать promises - они в jQuery есть с версии 1,6 если мне память не изменяет.