为什么这段PHP代码只能打印出"Array"?

3

这是我的代码:

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。我做错了什么?
6个回答

29

你正在调用实际数组上的echo,但它没有隐式字符串表示。

为了输出数组的内容,可以使用print_rvar_dumpvar_export函数。如果需要自定义输出,可以使用array_map甚至是foreach循环:

print_r($errormessage);
var_dump($errormessage);
var_export($errormessage);

foreach($errormessage as $error) 
   echo $error . '<br/>';

array_map('echo', $errormessage);

10
要打印数组可以使用var_dump,如果想获得数组的代码形式,则可以使用var_export - NikiC
呃,不可以。echo不能用作回调--它不是一个函数。https://3v4l.org/oT6s0 - mickmackusa

7

$errormessage 是一个数组,使用 echo 打印数组时只会显示 Array

如果你想以一种好的方式打印错误信息,可以使用 foreach 迭代信息并打印每个信息:

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

或者您甚至可以使用一些高级的数组处理技术,比如array_mapimplode,来执行类似于先前显示的内容,当数组至少包含一个项目时,可以做出等效的结果:

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

0
$errormessage = array();
$errormessage[] = "...";

两个定义将$errormessage定义为数组数据类型。Echo打印字符串或数字格式的数据。要从数组中打印数据,请使用建议的print_r或循环遍历数组成员并使用echo。


0

要查看变量内部的内容,只需执行以下操作

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

0

您需要将数组进行格式化输出。具体如何操作由您决定。

如果您要将该数组传递给JavaScript,则可能需要将其编码为JSON数组:

echo json_encode($errormessage);

-1

使用代码如下

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']; // <--
}
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接