注意:未定义的变量:post_object&注意:尝试获取非对象的属性

时间:2015-11-10 16:37:15

标签: php variables

我收到两个错误,这些错误是未定义的变量&试图获得非对象的财产。

麻烦制造者是$post_object

这些是给我带来麻烦的线条。此代码在localhost(使用mamp)和个人服务器上完美运行,但在我尝试在另一台服务器上运行代码时返回错误。我相信这是因为另一个更“严格”(即不接受<?而不是<?php),但我有点被困在这里。

在这种情况下,声明我的变量能够使用它的适当的方法是什么?

<?
    // get posts
    $post_array = getArray($slug, $filter, $order);

    // display posts
    foreach ($post_array as $i => $post_object)

    {
?>
        <div class="panel-body">
            <h4><a href="<?=$post_object->title_link?>"><?=$post_object->title?></a></h4>
            <p><?=$post_object->content?></p>
            <div style="width: 100%;"><div><?=$post_object->tags?></div></div>
        </div>
        <input class="timestamp" type="hidden" value="<?=($i*10)+1?>"/>
        <input class="title" type="hidden" value="<?=$post_object->title?>"/>
<?
    }
?>

2 个答案:

答案 0 :(得分:0)

很抱歉,由于我没有足够的声誉,我无法发表评论。

您似乎将值作为对象访问,但您将代码中的内容命名为数组?

访问您使用的对象中的值

$post_object->title;

但如果它是一个数组,你会使用

$post_object['array'];

不确定这是否有帮助。

答案 1 :(得分:0)

我可能错过了一些细节,但似乎最大的风险是假设$port_object是一个对象和正确类型的对象。

假设是这种情况,我最好的建议是使用is_object()get_class()函数插入一张检查$post_object是正确对象的检查。我不知道实际的对象名称是什么,所以我会认为它是&#34; Post&#34;在下面的例子中:

<?
    // get posts
    $post_array = getArray($slug, $filter, $order);

    // display posts
    foreach ($post_array as $i => $post_object)

    {
        if(is_object($post_object) == false || get_class($post_object) != 'Post' ) {
            continue;
        }
?>
        <div class="panel-body">
            <h4><a href="<?=$post_object->title_link?>"><?=$post_object->title?></a></h4>
            <p><?=$post_object->content?></p>
            <div style="width: 100%;"><div><?=$post_object->tags?></div></div>
        </div>
        <input class="timestamp" type="hidden" value="<?=($i*10)+1?>"/>
        <input class="title" type="hidden" value="<?=$post_object->title?>"/>
<?
    }
?>

检查将导致循环跳过任何无效对象。可以在检查中执行其他步骤来处理其他数据结构。

我还建议使用var_dump($_post_object)甚至var_dump($post_array)来识别变量中的实际内容。

相关问题