【问题标题】:Obtaining $_SESSION array values and displaying using echo获取 $_SESSION 数组值并使用 echo 显示
【发布时间】:2017-11-26 08:19:50
【问题描述】:

我有 ff 代码,它将表单文本字段中输入的值存储到我命名为“数字”的会话数组中。我需要显示数组的值,但每次尝试echo $value; 时都会出现错误Array to string conversion in

我使用echo var_dump($value); 并验证所有输入的值都存储到会话数组中。

我的目标是每次用户点击提交按钮时将用户输入存储到一个数组中。

我该如何纠正这个问题?

<?php 
    session_start();
?>

<html>
<head>
    <title></title>
</head>
<body>
    <form method="POST" action="index.php"> 
        <label>Enter a number</label>&nbsp;
        <input type="text" name="num" required />
         <button type="submit">Submit</button> 
    </form>
</body>
</html>

    <?php
    if (isset($_POST["num"]) && !empty($_POST["num"])){
        $_SESSION['numbers'][] = $_POST["num"];

        foreach($_SESSION as $key => $value){
            echo ($value);
        }
    }
    ?>

谢谢。

【问题讨论】:

  • $value 是一个数组。你应该把它作为$_SESSION['numbers'] = $_POST["num"];.. 你不需要清空[]
  • 您正在使用$_SESSION['numbers'][] = $_POST["num"]; 创建另一个数组级别
  • 添加 [] 创建一个变量数组。因此,当您尝试使用 Echo 打印数组时,它会报错

标签: php arrays session


【解决方案1】:

在执行$_SESSION['numbers'][] = $_POST["num"]; 时,您正在使$_SESSION['numbers'] 成为一个数组:因此您需要以不同的方式执行此操作,或者检查您的foreach 循环中的$value 是否是一个数组。

if (isset($_POST["num"]) && !empty($_POST["num"])){
    $_SESSION['numbers'][] = $_POST["num"];

    foreach($_SESSION as $key => $value){
        if (is_array($value)) {
            foreach ($value as $valueNested) {
                echo ($valueNested);
            }
        } else {
            echo ($value);
        }
    }
}

if (isset($_POST["num"]) && !empty($_POST["num"])){
    $_SESSION['numbers'] = $_POST["num"];

    foreach($_SESSION as $key => $value){
        echo ($value);
    }
}

后者可能是你真正想要完成的。

【讨论】:

    【解决方案2】:

    如果你想回显所有输入的数字,你的每个周期应该是:

    foreach($_SESSION[‘numbers’] as $key => $value) {
        echo $value;
    }
    

    这是因为 $_SESSION['numbers'] 本身就是包含数字的数组。

    【讨论】:

    • 谢谢你解决了它。我需要查看我得到了什么值,因为我需要使用 if 语句测试每个值以查看它是否存在?我可以将 in_array($array) 用于超级全局 $SESSION 吗?
    • 是的,我认为你可以使用 in_array
    【解决方案3】:

    错误是因为 SESSION[“numbers”] 是一个数组,你可以直接回显一个数组。它将抛出错误“数组到字符串转换”。

    遍历数组并打印它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 2011-09-27
      • 2016-05-17
      • 2021-04-21
      • 2023-03-19
      相关资源
      最近更新 更多