Как передать массив через функцию?

Помогите с функцией
function file_error($avtor, $file)
{
    $error = array();
    if (empty($avtor))
    {
        $error[] = "введите имя автора!";
        
    }
    if (empty($file))
    {
        $error[] = "Выберите фаил";
        
    }
    return $error ;


}


Пытаясь вывести результаты массива
$oshibka = file_error($_POST['avtor'], $_FILES['uploadfile']['name']);
   if (count($oshibka)== 0){
        
        
        upload();
        bd_insert($_FILES['uploadfile']['name'], $_POST['avtor']);
        } else{
             print "<b>При загрузке произошли следующие ошибки:</b><br>";
        foreach($error AS $err)
        {
            print $err."<br>";
        }
        }

получаю ошибку категории
Warning: Invalid argument supplied for foreach()

Не судите строго только начал изучать php.
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
Caarl
@Caarl Автор вопроса
решилил проблему вот так:
function file_error($avtor, $file)
{
    
    if (empty($avtor))
    {
        $error1 = "введите имя автора!";
        
    }
    if (empty($file))
    {
        $error2 = "Выберите фаил";
        
    }
    return $error = array($error1,$error2);


}


но все же как передать массив который не надо прописывать вручную return $error = array($error1,$error2); с автоматическим добавлением типа $error[] = "текст ошибки";??
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Вы уж определитесь $oshibka у вас или $error. Пишете в одну переменную, читаете из другой - вот и не работает.

Ну и немного здравого смысла:
  • Конечно, не нужно использовать транслитерацию, пишите обычным английским языком.
  • Если у вас массив ошибок, то и переменная должна называться во множественном числе.
  • Отформатируйте код и пользуйтесь IDE, это уменьшит количество глупых ошибок.
Ответ написан
Uwe_Boll
@Uwe_Boll
Я Злой и Страшный Уве Болл в Разработке знаю Толк
данная ошибка говорит что в цикл foreach() передан НЕ массив
что бы решить проблему вам нужно изменить код вот так
function file_error($avtor, $file){
    $error = array();
    if (empty($avtor)){
      return  $error[] = "введите имя автора!";
    }
    if (empty($file)){
       return $error[] = "Выберите фаил";
    } 
}

$error= file_error($_POST['avtor'], $_FILES['uploadfile']['name']);
   if (count($oshibka)== 0){
        upload();
        bd_insert($_FILES['uploadfile']['name'], $_POST['avtor']);
        } else{
             print "<b>При загрузке произошли следующие ошибки:</b><br>";
        foreach($error AS $err) {
            print $err."<br>";
        }
   }
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы