简体   繁体   English

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

[英]Why does this PHP code just echo “Array”?

Here is my code: 这是我的代码:

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

When echo $errormessage runs it outputs Array . echo $errormessage运行时,它输出Array What am I doing wrong? 我究竟做错了什么?

You are calling echo on an actual array, which does not have an implicit string representation. 您在实际数组上调用echo ,该数组没有隐式字符串表示形式。

In order to output an array's contents you can use the print_r , var_dump or var_export functions or for custom output, you can use array_map or even a foreach loop: 要输出数组的内容,您可以使用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 is an array and using echo on an array prints just Array . $errormessage是一个数组,在数组上使用echo只打印Array

If you want to print your error messages in a decent way, you can either use foreach to iterate the messages and print each message: 如果要以合适的方式打印错误消息,可以使用foreach迭代消息并打印每条消息:

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

Or you can even use some advanced array processing like array_map and implode to do something like this that is equivalent to the previously shown when the array contains at least one item: 或者您甚至可以使用像array_mapimplode这样的高级数组处理来执行类似于以前在数组包含至少一个项目时显示的内容:

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

You need to pretty-print the array. 你需要漂亮打印数组。 How you do this is up to you. 你如何做到这一点取决于你。

If you're passing the array to some JavaScript, you probably want to encode it as a JSON array: 如果您将数组传递给某些JavaScript,您可能希望将其编码为JSON数组:

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

Both defines $errormessage as array datatype. 两者都将$ errormessage定义为数组数据类型。 Echo prints data from string or numeric format. Echo以字符串或数字格式打印数据。 To print data from array either use print_r as suggested or loop through the members of array and use echo 要从数组打印数据,请按建议使用print_r,或循环遍历数组成员并使用echo

To see what's inside you variable just do 要查看变量内部的内容,请执行此操作

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

use the code as like this 像这样使用代码

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