@swcalc

Почему PHP не проходит условие, возвращающее 1 (TRUE)?

Результат работы

">>>>> {\"Id\":10,\"owner\":6,\"text\":\"mnogo_texta\",\"date\":\"2015-12-01 13:04:58\",\"status\":1,\"reply_to\":9,\"views\":0} 

<<<<<< !!_!_!(((((1)))))_!__!_!


>>>>> [{\"Id\":14,\"owner\":5,\"text\":\"\mnogo_texta\",\"date\":\"2015-12-01

 13:07:58\",\"status\":1,\"reply_to\":9,\"views\":0},{\"Id\":17,\"owner\":4,\"text\":\mnogo_texta\",\"date\":\"2015-12-01 

14:12:58\",\"status\":1,\"reply_to\":9,\"views\":0}] <<<<<<


Немного пугающий код функции
function surfPost(array $post) {
        $c = '';
        for ($i = 0, $j = 0, $keys = array_keys($post); $given = @$post[$keys[$j]], $i <= count($given); $i++) {
            $c .= '>>>>> ' . json_encode(@$given) . ' <<<<<< ';
            if (@$given[$i] && ($given = $given[$i]) || $j++ && !($i = 0)) {
                $j = $j - 1;
                $c .= '>>>>> ' . @$given['Id'] . ' <<<<<< ';
                break;
            } else {
                $c .= (@$given[$i] && ($given = $given[$i]) || $j++ && !($i = 0)) ? '!!_!_!(((((' . 1 . ')))))_!__!_!' : '!!_!_!(((((' . 0 . ')))))_!__!_!';
            }
        }
        return $c;
    }

Вся соль в том, что данное условие отдает ELSE, но после в нем же выводит 1, почему такое может происходить?
Понимаю, что код может навредить детской психике, но как-то так.
  • Вопрос задан
  • 232 просмотра
Решения вопроса 1
Denormalization
@Denormalization
Кто этот бред писал?
Что вот это:
if (@$given[$i] && ($given = $given[$i]) || $j++ && !($i = 0))

Должно делать?

PS
Ок, проблема понятна. Преркатите писать такой кривой код, тогда и подобных проблем не будет.

Внимательно смотрим сюда:
<?php

$j = 0;

if ($j++) {
    echo 1;
} else {
    echo "Else:", $j;
}


И читаем про php.net/manual/ru/language.operators.increment.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы