Я пытаюсь использовать троичный вывод, чтобы сделать 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;
}
Я бы сделал свою троичную, как показано ниже, а затем проверить, если $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++;
}
Вы смешиваете условный синтаксис «от руки» и «от руки».
Ваше неоднозначное имя функции в сочетании с ее возвращаемым значением сбивает с толку / не интуитивно понятно. Я рекомендую переименовать вашу функцию или изменить логическое значение, которое она возвращает.
Всегда стараться использовать СУХОЙ и ВЛАЖНЫЙ практика кодирования.
Подход во второй половине вашего кода выглядит лучше, чем в первой.
Если вы собираетесь генерировать массив ошибок, не беспокойтесь о приращении счетчика, просто подсчитайте массив, когда захотите.
Я не вижу необходимости дополнять ваш код условными обозначениями.
Код: (демонстрация)
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',
)
Вы не можете выполнить две операции в троичном случае. Вы можете просто проверить, если $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;
}