【问题标题】:php var_dump shows array but can't access itphp var_dump 显示数组但无法访问它
【发布时间】:2019-01-06 01:04:27
【问题描述】:

无法访问数组,但var_dump() 可以看到。

session_start();

include './entities/Answer.php';
include './entities/Question.php';
include './Database.php';

 if (isset($_SESSION["question"])) {
        $correct = TRUE;
        var_dump($_SESSION["question"]);
        var_dump($_SESSION["question"]->answers);
        }
    } else {
        echo "<h2>no question selected.</h2>";
    }

var_dump($_SESSION["question"]); 显示:

object(__PHP_Incomplete_Class)#2 (8) {  
    ["__PHP_Incomplete_Class_Name"]=> string(8) "Question"  
    ["id"]=> string(1) "1" 
    ["correct"]=> NULL 
    ["wrong"]=> NULL 
    ["answers"]=> array(3) { 
        [0]=> object(__PHP_Incomplete_Class)#3 (5) { 
            ["__PHP_Incomplete_Class_Name"]=> string(6) "Answer" 
            ["correct"]=> string(1) "0" 
            ["question_id":"Answer":private]=> NULL 
            ["id"]=> string(1) "1" 
            ["text"]=> string(9) "antwort 1" 
        } 
        [1]=> object(__PHP_Incomplete_Class)#4 (5) { 
            ["__PHP_Incomplete_Class_Name"]=> string(6) "Answer" 
            ["correct"]=> string(1) "0" 
            ["question_id":"Answer":private]=> NULL 
            ["id"]=> string(1) "2" 
            ["text"]=> string(5) "ant 2" 
        }
        [2]=> object(__PHP_Incomplete_Class)#5 (5) { 
            ["__PHP_Incomplete_Class_Name"]=> string(6) "Answer" 
            ["correct"]=> string(1) "0" 
            ["question_id":"Answer":private]=> NULL 
            ["id"]=> string(1) "3" 
            ["text"]=> string(5) "ant 3"
        }
    }
    ["creator_id"]=> NULL 
    ["categories"]=> array(0) { } 
    ["text"]=> string(17) "eine Test frage ?" 
}

var_dump($_SESSION["question"]-&gt;answers); 显示NULL

我真的不明白。

我收到此错误消息:

PHP 注意:main():脚本试图执行方法或访问不完整对象的属性。请确保您尝试操作的对象的类定义“问题”已加载 unserialize() 被调用或提供 __autoload() 函数来加载类定义

感谢您的帮助。

【问题讨论】:

  • 你可能没有包含你的类定义。
  • 包括'./entities/Answer.php';答案是数组的类型
  • 暂时将include 换成require,以确保他们正在提取所需的代码。并检查错误。
  • 我试了一下,但没有任何改变,我添加了一条错误消息。
  • 尝试将 session_start 放在你的类定义之后。

标签: php arrays


【解决方案1】:

我必须将 session_start 放在我的类定义之后。感谢Progrock

    include './entities/Answer.php';
    include './entities/Question.php';
    include './Database.php';

    session_start();

【讨论】:

    【解决方案2】:

    在尝试与会话对象交互之前,您需要运行 session_start()

    另外,您需要在调用 session_start() 之前定义您的对象,否则 PHP 的会话处理程序将不知道如何反序列化该对象。这就是你看到__PHP_Incomplete_Class的原因。

    编辑:我发现这个答案可以帮助你PHP __PHP_Incomplete_Class Object with my $_SESSION data

    【讨论】:

    • 会话肯定已经开始,否则 $_SESSION 可能为空。
    • 我做到了,我只是把它留在了sn-p中。
    猜你喜欢
    • 2014-05-13
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多