为什么PHP echo返回不完整的链接?

为什么PHP echo返回不完整的链接?,php,Php,因此,我有以下代码: echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>'; 如果我打印$Elements,我可以看到$Elements[2]是sometext 为什么我不能将$Elements[2]与其他几个变量一起回显

因此,我有以下代码:

echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';
如果我打印$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>';
}

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>';
为什么我不能将$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>';
这已经不考虑$Elements或$Row包含什么了。首先开始思考,您需要分析为什么会发生这种情况,其他人无法帮助您,因为我们没有您的软件和数据来调试它。再过一段时间,你就会学会用自己最好的方法来找出你所犯的错误


花点时间自己设置xdebug调试器,然后逐步完成代码。它可以帮助您快速定位错误。不仅是这一次,而且是在将来。

您似乎正在URL的一部分HTML属性中打印未缩放的文本。我的猜测是,在浏览器呈现脚本时,您正在检查脚本的输出,例如,通过鼠标悬停并读取工具提示。相反,请使用浏览器的“查看源”功能查看确切的输出

其他提示:

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

在出现问题的行中或之后立即中止脚本,以确保以后不会更改输出


您是否向自己证明了这些变量包含您期望的值?print_r显示了什么?发布print_r$ElementsTry的确切输出,也就是始终输出某些内容的var_dump!你能在这里发布print_r$元素的结果吗?@Erik:问这个问题已经表明你怀疑这不可能是真的。如果你已经那么远了,为什么不试着找出你犯的错误呢?一段艰难的时光?在PHP中,操作符的工作方式,甚至表达式都是99999%可预测的,只有非常有限的未定义行为。这是一个通过托管提供商共享的服务器,我无法控制文本$var1$var2。文本在我自己设置和管理的服务器上,我可以做到。让我再解释一下。我有一个.htaccess,它以subpage1/subpage2/subpage3//等形式将所有数据重定向到index.php。当index接收到数据时,我将其与/一起分解,并将所有数据存储到$Elements中。当我var_dump时,我得到数组3{[0]=>string0[1]=>string7-izdelki[2]=>string7-test-po}。您可以在这里看到$Elements[2]被设置并等于测试po。当我试着在我上面张贴的一个句子中使用这个词时,我什么也没说出来。而且变量在索引中永远不会更改。可能有什么问题?我的印象是,您正在立即调试整个应用程序,而不是假定失败的一行。如果您将$Elements放在行的前面,在行的后面死,然后转到“查看->页面源”,您将看到哪里出了问题。@Erik:不是真的,但是,我也编辑了我的答案,我希望它有意义。
echo '<li><a href="'.$Website.$Elements[2].'/'.$Row["povezava"].'" class="leftMenuArticlesInactive"></a><li>';
http://www.somesite.com/test/sometext2