Почему этот PHP-код просто эхо «Array»?

Вот мой код:

if(isset($_POST['check']) AND $_POST['check'] == 'First') { $errormessage = array(); if(empty($_POST['full_name']) || strlen($_POST['full_name']) < 4) { $errormessage[] = "FEL - Vänligen ange fullständiga namn. Please enter atleast 3 or more characters for your name"; } if(!isEmail($_POST['usr_email'])) { $errormessage[] = "FEL - Invalid email address."; } if(empty($errormessage)) { echo 1; } else { echo $errormessage; // <-- } } 

При echo $errormessage он выдает Array . Что я делаю не так?

Вы вызываете echo в реальном массиве, который не имеет неявного представления строки.

Чтобы вывести содержимое массива, вы можете использовать функции print_r , var_dump или var_export или для пользовательского вывода, вы можете использовать array_map или даже цикл foreach :

 print_r($errormessage); var_dump($errormessage); var_export($errormessage); foreach($errormessage as $error) echo $error . '<br/>'; array_map('echo', $errormessage); 

$errormessage – это массив и использование echo в массиве печатает только Array .

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

 echo '<ul>'; foreach ($errormessage as $message) { echo '<li>'.htmlspecialchars($message).'</li>'; } echo '</ul>'; 

Или вы даже можете использовать некоторую расширенную обработку массива, такую ​​как array_map и array_map чтобы сделать что-то подобное, что эквивалентно ранее показанному, когда массив содержит хотя бы один элемент:

 echo '<ul><li>' . implode('</li><li>', array_map('htmlspecialchars', $errormessage)) . '</li></ul>'; 

Вам нужно красиво напечатать массив. Как вы это делаете, зависит от вас.

Если вы передаете массив на некоторый JavaScript, вы, вероятно, захотите его закодировать как массив JSON:

 echo json_encode($errormessage); 
 $errormessage = array(); $errormessage[] = "..."; 

Оба определяют $ errormessage как тип данных массива. Echo печатает данные из строкового или числового формата. Чтобы печатать данные из массива, используйте print_r, как предлагается, или цикл через элементы массива и используйте эхо

Чтобы увидеть, что внутри вас переменная, просто выполните

  print_r( $errormessage ); // or var_dump( $errormessage ); 

используйте код так, как это

 if(isset($_POST['check']) AND $_POST['check'] == 'First') { $errormessage = array(); if(empty($_POST['full_name']) || strlen($_POST['full_name']) < 4) { $errormessage['error_what_ever_key_you_want'] = "FEL - Vänligen ange fullständiga namn. Please enter atleast 3 or more characters for your name"; } if(!isEmail($_POST['usr_email'])) { $errormessage['error_what_ever_key_you_want'] = "FEL - Invalid email address."; } if(!empty($errormessage)){ echo $errormessage['error_what_ever_key_you_want']; // <-- } }