繁体   English   中英

为什么这个PHP代码只是回显“数组”?

[英]Why does this PHP code just echo “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_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);

$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>';

你需要漂亮打印数组。 你如何做到这一点取决于你。

如果您将数组传递给某些JavaScript,您可能希望将其编码为JSON数组:

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

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

要查看变量内部的内容,请执行此操作

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM