Установка значения переменной в троичном регистре PHP

Я пытаюсь использовать троичный вывод, чтобы сделать 2 вещи в последнем случае.

Проблема, с которой я столкнулся, — это установка текстового значения переменной в последнем случае после увеличения числа ошибок.

Я перепробовал несколько вещей, вот две попытки, но обе они не смогли установить $errors_log значение.

Q. Как я могу установить значение переменной в выходной троичной.

$errors_v=0;
if (validate_username() == false ? null : $errors_v++ && $errors_log='username invalid');

if ($errors_v != 0) {
echo $errors_log;
}

function validate_username() {
return true;
}

$errors_v=0;
$errors_log[];
if (validate_username() == false ? null : $errors_v++ && $errors_log[]='username invalid');

if ($errors_v != 0) {
var_dump($errors_log);
}

function validate_username() {
return true;
}

0

Решение

Я бы сделал свою троичную, как показано ниже, а затем проверить, если $errors_log не пусто, и если это не так, распечатайте ошибки.

$errors_log[] = validate_username() === false ? null : 'username invalid';

if (!empty($errors_log)) {
foreach($errors_log as $error) {
echo $error;
}
}

function validate_username() {
return true;
}

Если необходимо иметь счетчик, а я действительно рекомендую вам рассчитывать на $errors_log вместо массива вы можете сделать что-то вроде этого:

if (!validate_username()) {
$errors_log[] = 'username invalid';
$errors_v++;
}
1

Другие решения

Вы смешиваете условный синтаксис «от руки» и «от руки».

Ваше неоднозначное имя функции в сочетании с ее возвращаемым значением сбивает с толку / не интуитивно понятно. Я рекомендую переименовать вашу функцию или изменить логическое значение, которое она возвращает.

Всегда стараться использовать СУХОЙ и ВЛАЖНЫЙ практика кодирования.

Подход во второй половине вашего кода выглядит лучше, чем в первой.
Если вы собираетесь генерировать массив ошибок, не беспокойтесь о приращении счетчика, просто подсчитайте массив, когда захотите.

Я не вижу необходимости дополнять ваш код условными обозначениями.

Код: (демонстрация)

function bad_username(){  // new meaningful function name
return true;
}

$errors_log=[];  // declare the variable as an array
if(bad_username()){
$errors_log[]='username invalid';  // push the value
}

if(sizeof($errors_log)){  // count elements in array, if 1 or more display them
var_export($errors_log);
}else{
echo "No Error";
}

Выход:

array (
0 => 'username invalid',
)
1

Вы не можете выполнить две операции в троичном случае. Вы можете просто проверить, если $errors_log является empty и если это увеличение $errors_v внутри if утверждение как это:

if (validate_username() == false ? null : $errors_log='username invalid');

if (!empty($errors_log)) {
$errors_v++;
echo $errors_log;
}

function validate_username() {
return true;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector