Вот мой код:
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']; // <-- } }