什么??? PHP无法回显变量....?

时间:2012-04-03 08:54:00

标签: php

嘿伙计们,我的代码发生了这个非常奇怪的事情......

所以我有以下代码:

echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';
  1. $网站包含:http://www.somesite.com/test/
  2. $ Elements [2]包含:sometext
  3. $ Row [“povezava”]包含:sometext2
  4. 所有变量都只有字母。

    现在我的问题。 如果我试着回应以下内容,我会得到:

    // I'm missing "sometext":
    http://www.somesite.com/test/sometext2
    // Should be like this:
    http://www.somesite.com/test/sometext/sometext2
    

    如果我执行print_r($ Elements),我可以看到$ Elements [2]是“sometext”。

    为什么我不能回复$ Elements [2]以及其他一些变量???

    编辑:更多代码!

    $Website = 'http://' . $_SERVER["SERVER_NAME"] . '/' . $Elements[1] . '/';
    
    function ShowMenuOfParent($Parent, $Spacing) {
        $Query = mysql_query("SELECT * FROM `izdelki_meni` WHERE `stars` = '$Parent';");
        if(mysql_num_rows($Query) != 0) {
            while($Row = mysql_fetch_array($Query)) {
                $s = '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive">';
                for($i = 0; $i < $Spacing;$i++) {
                    $s .= '&nbsp;';
                }
                $s .= $Row["ime"].'</a></li>';
                echo $s;
                ShowMenuOfParent($Row["id"], $Spacing + 8);
            }
        }
    }
    
    $Query = mysql_query("SELECT * FROM `izdelki_meni` WHERE `stars` = 0;");
    if(mysql_num_rows($Query) != 0) {
        echo '<ul>';
        while($Row = mysql_fetch_array($Query)) {
            echo '<li><a href="'.$Website.$Row["povezava"].'" class="leftMenuArticlesActive">'.$Row["ime"].'</a></li>';
            if($Elements[2] == $Row["povezava"]) {
                ShowMenuOfParent($Row["id"], 8);
            }
        }
        echo '</ul>';
    }
    

3 个答案:

答案 0 :(得分:2)

  

为什么我不能回复$ Elements [2]以及其他一些变量?

实际上,echo可以做到这一点,所以只有这部分问题仍未解决:

  

为什么我不能?

你可以做什么,你不能做什么往往取决于你到目前为止学到了什么。由于学习是主观的,所以除了你以外,其他人很难回答这个问题。但是,您可以添加更多信息,尤其是阻碍您了解实际问题,以便其他人可以更好地为您提供帮助。


您提供的问题信息实际上是错误的。我可以理解你有一个问题,你想解决它,但你实际做的是你通过在这里发布它作为邀请其他人甚至做更多的猜测来使你的问题更大。我的意思是10个人能够猜出不止一个人。所以你问的方式实际上是适得其反的,没有帮助。对于你自己和其他人一样。

而不是猜测你需要开始逐步实际证明事情。从你自己的期望开始:

  

现在我的问题。如果我试着回应以下内容,我会得到:

// I'm missing "sometext":
http://www.somesite.com/test/sometext2
// Should be like this:
http://www.somesite.com/test/sometext/sometext2

您发布的与输出相关的代码是:

echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';

你写$Website/test/结束,另外在输出字符串(.'/'.)中有一个斜杠,但是输出本身甚至不包含那个额外的字符串你:

http://www.somesite.com/test/sometext2

这已经是$Elements$Row包含的内容了。首先考虑,需要分析为什么会发生这种情况,其他人无法帮助你,因为我们没有你的软件和数据来调试它。有一段时间,你将学习自己找到错误的最佳方法。

花点时间自己设置xdebug调试器,然后逐步执行代码。它可以帮助您快速定位错误。不仅是这个时间,还有将来。

答案 1 :(得分:1)

您似乎在HTML属性中打印未转义的文本,该属性是URL的一部分。我有根据的猜测是,你在浏览器渲染时检查脚本的输出,例如:通过悬停鼠标并阅读工具提示。而是使用浏览器的“查看源”功能查看确切的输出。

其他提示:

  1. var_dump()是迄今为止用于调试目的的最佳内置函数。所有其他函数要么将变量转换为字符串,要么隐藏一些重要信息。

  2. 在违规行后面用die()exit()中止脚本,以确保以后不会更改输出。

答案 2 :(得分:0)

PHP有时很难对一行中的多个变量进行连接(背靠背)。这取决于服务器设置。您可以尝试使用以下方法之一进行回显:

echo '<li><a href="'.$Website.''.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';

echo '<li><a href="'.$Website;
echo $Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';

echo '<li><a href="',$Website,$Elements[2],'/',$Row["povezava"],'" class="leftMenuArticlesInactive"></a><li>';