我收到两个错误,这些错误是未定义的变量&试图获得非对象的财产。
麻烦制造者是$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?>"/>
<?
}
?>
答案 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)
来识别变量中的实际内容。