PHP4有效代码在PHP5中停止工作?

时间:2012-02-21 23:15:49

标签: php arrays

好的,所以我有一些在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工作....不工作的愚蠢原因。感谢大家的意见。

1 个答案:

答案 0 :(得分:3)

我敢打赌,你是http://php.net/manual/en/ini.core.php#ini.register-globals在PHP5中违约的受害者,因为它可能存在安全风险。我会验证,如果确实如此,解决方案可能很复杂或容易,具体取决于您是否需要安全性。为了验证,您需要发布更多代码,或者在您的服务器上进行测试。