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

PHP4有效代码在PHP5中停止工作?,php,arrays,Php,Arrays,好的,我有一些代码在PHP4中工作得很好,但是由于升级到PHP5,它不会产生我想要的结果 这是我的一些代码,它以漂亮的3列格式显示了一些新闻帖子。它检查新闻发布的位置,并将其添加到相应的数组中。然后它打印出数组 假设$data是一个数组,包含新闻文章内容,如标题、日期和内容 // Add to columns. for($i=0; $i<sizeof($data); $i++) { // Convert Date Format. $old_date = $data[$i][

好的,我有一些代码在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;
}
//添加到列。
对于($i=0;$igetContents($data[$i]['post_content'))>100){
$post_content=$nh->getSnippet($data[$i]['post_content'],500,TRUE);
$post_content.=“…

”; }else$post_content=$nh->getContents($data[$i]['post_content']); //设置内容变量。 $content=” 于{$new_date}发布 {$post_content} "; //添加到适当的列数组中。 if(在数组中($i,$leftIDs))$left[]=$content; else if(在数组中($i,$midds))$mid[]=$content; else if(在数组中($i,$rightIDs))$right[]=$content; }
问题是我在哪里有
$content
变量并将其添加到数组堆栈中。出于某种原因,它没有添加它。当转储
$content
时,它会显示新闻内容——因此可以正确地从
$data
数组中提取数据

打印出
$left
$mid
$right
数组将返回空数组。我已经检查了底部的if语句是否返回true,它们是真的。那么,为什么我的数据没有被添加

编辑:可以找到我的全部代码

注:之所以使用数组
xxID
,是为了确定当前的新闻帖子将出现在哪个栏目中。然后我把所有的东西都打印出来,这样所有的东西都能很好地显示出来

旧的:

新的:



更新:将结束符
添加到数组末尾的行:
$leftWrapper=sizeof($left)-1$左[$leftWrapper]=''正在覆盖添加到数组中的内容。。。奇怪,因为它在PHP4中起作用。。。。不工作的理由真傻。谢谢大家的意见。

我敢打赌,您是PHP5中默认关闭的受害者,这是应该的,因为让它们打开可能会带来安全风险。我想验证一下,如果这是真的,那么解决方案可能是复杂的,也可能是简单的,这取决于您是否需要安全性。为了验证,您需要发布更多的代码,或者在您的服务器上进行测试。

我打赌您是PHP5中默认关闭的受害者,这是应该的,因为打开它们可能会带来安全风险。我想验证一下,如果这是真的,那么解决方案可能是复杂的,也可能是简单的,这取决于您是否需要安全性。为了验证,您需要发布更多的代码,或者在您的服务器上进行测试。

我尝试启用它来验证这是否是问题所在,但仍然没有结果。启用它需要在PHP.ini文件right?@lemonpole right中将
register\u globals=Off
设置为
register\u globals=On
。如果这不起作用,我们真的需要看到更多的代码,您应该检查错误日志,看看是否有什么事情发生了。就您显示的代码片段而言,这似乎很好,不同php版本之间应该没有什么不同。是的。除非
$nh
类有问题。为什么您要故意打开
register\u globals
…为了您自身的安全,我建议重新编码,而不是启用它。@Cyclone,他打开它以验证这是否是问题所在。我不认为他打算让它保持打开状态。@BradFJacobs我已将代码上载到Paste--查看上面的编辑链接。我尝试启用它以验证这是否是问题所在,但仍然没有任何结果。启用它需要在PHP.ini文件right?@lemonpole right中将
register\u globals=Off
设置为
register\u globals=On
。如果这不起作用,我们真的需要看到更多的代码,您应该检查错误日志,看看是否有什么事情发生了。就您显示的代码片段而言,这似乎很好,不同php版本之间应该没有什么不同。是的。除非
$nh
类有问题。为什么您要故意打开
register\u globals
…为了您自身的安全,我建议重新编码,而不是启用它。@Cyclone,他打开它以验证这是否是问题所在。我不认为他打算让它保持打开状态。@BradFJacobs我已将代码上载到Paste--查看上面的编辑以获得链接。请在函数末尾添加“else echo”\n“并发布结果。(当然我猜$leftIDs、$midds和$rightIDs都是borked)@EugenRieck我添加了
else echo“\n”到我的if-else语句的末尾,但之后它甚至不显示runtime@lemonpole看着它,它看起来很好。我能想到的唯一一件事就是NewHandler类中出现了一些混乱。找到一些东西的一种方法是放一些东西,比如
echo'here'从上到下,查看它在哪里停止“此处”的回声,此时您知道它在哪里中断,并可以从那里进行调试。当然,您也可以检查错误日志:)这样它就不会显示注释,也不会添加到$[left | mid | right],但在if-else-if?@EugenRieck-yes之前,$内容设置正确$如果在if-else if之前正确设置了内容,请在函数末尾添加'else-echo'\n',并发布结果。(当然我猜$leftIDs、$midds和$rightIDs都是borked)@EugenRieck我添加了
else echo“\n”到我的if-else语句的末尾,但之后它甚至不显示runtime@lemonpole看着它,它看起来很好。我能想到的唯一一件事就是NewHandler类中出现了一些混乱。找到一些东西的一种方法是放一些东西,比如
echo'here'goin