好的,所以我有一些在PHP4中运行良好的代码,但是由于升级到PHP5,它不会产生我想要的结果。
这是我的一些代码,它以一个漂亮的3列格式显示一些新闻帖子。它检查新闻帖的去向,并将其添加到相应的数组中。然后它打印出阵列。
假设$data
是一个包含新闻发布内容的数组,例如标题,日期和内容。
// Add to columns.
for($i=0; $i<sizeof($data); $i++) {
// Convert Date Format.
$old_date = $data[$i]['post_date'];
$middle = strtotime($old_date);
$new_date = date('F d, Y', $middle);
// Calculate amount of text to display.
if(strlen($nh->getContents($data[$i]['post_content'])) > 100) {
$post_content = $nh->getSnippet($data[$i]['post_content'], 500, TRUE);
$post_content .= "...<br /><br /><a href=\"showNewsPost.php?post_id={$data[$i]['post_id']}\">Read more...</a>";
} else $post_content = $nh->getContents($data[$i]['post_content']);
// Setup content variable.
$content = "
<div class=\"content post\">
<h1 class=\"title\"><a href=\"showNewsPost.php?post_id={$data[$i]['post_id']}\">{$data[$i]['post_title']}</a></h1>
<h2 class=\"subtitle\">Posted on {$new_date}</h2>
{$post_content}
</div>
";
// Add to appropriate column array.
if(in_array($i, $leftIDs)) $left[] = $content;
else if(in_array($i, $midIDs)) $mid[] = $content;
else if(in_array($i, $rightIDs)) $right[] = $content;
}
问题在于我有$content
变量并将其添加到数组堆栈。由于某种原因,它没有添加它。转储$content
时会显示新闻内容 - 因此正在从$data
数组中正确提取数据。
打印出$left
,$mid
和$right
数组会返回空数组。我检查了底部的if语句是否返回true - 它们是。那么为什么我的数据没有添加?
编辑:可以找到我的全部代码here
P.S。:数组xxID
的原因是要确定当前新闻帖子将在哪一列。然后我就把所有内容都打印出来,这样就可以很好地显示所有内容。
旧:old
新:new
UPDATE:将结束</div>
添加到数组末尾的行:$leftWrapper = sizeof($left) - 1; $left[$leftWrapper] = '</div>';
覆盖了添加到数组中的内容...奇怪,因为它在PHP4工作....不工作的愚蠢原因。感谢大家的意见。
答案 0 :(得分:3)
我敢打赌,你是http://php.net/manual/en/ini.core.php#ini.register-globals在PHP5中违约的受害者,因为它可能存在安全风险。我会验证,如果确实如此,解决方案可能很复杂或容易,具体取决于您是否需要安全性。为了验证,您需要发布更多代码,或者在您的服务器上进行测试。