【问题标题】:Unordered echo in phpphp中的无序回声
【发布时间】:2014-12-27 12:22:04
【问题描述】:

我在php中测试东西,在预期的结果中发现了一个奇怪的东西。

这是我使用的程序:

<?php
$tags = $_GET['tags'];
$uid = $_GET['uid'];
$langs = $_GET['langs'];
echo var_dump($tags).$uid.var_dump($langs);
?>

请求:

myfile.php?tags[]=IT&tags[]=CS&uid=userIdent&langs[]=basque&langs[]=spanish

结果:

array(2) { [0]=> string(2) "IT" [1]=> string(2) "CS" } array(2) { [0]=> string(6) "basque" [1]=> string(7) "spanish" } userIdent

我不明白为什么两个 var_dump 函数之间没有回显 uid

【问题讨论】:

    标签: php echo


    【解决方案1】:

    var_dump() 不返回字符串,它自己输出。 echo 的整个参数在 echo 打印任何内容之前进行评估。所以你的陈述相当于:

    $temp1 = var_dump($tags);
    $temp2 = $uid;
    $temp3 = var_dump($langs);
    echo $temp1.$temp2.$temp3;
    

    由于var_dump() 不返回任何内容,$temp$temp2 将为空。所以它实际上相当于;

    var_dump($tags);
    var_dump($langs);
    echo $uid;
    

    【讨论】:

      【解决方案2】:

      echo 不会回显$uid,而是会尝试输出var_dump 的结果,我认为是void

      你可能想要:

      var_dump($tags);
      echo $uid;
      var_dump($langs);
      

      var_dump通常用于调试,而不是渲染最终结果

      【讨论】:

        【解决方案3】:

        您将var_dump返回值$uid 连接起来。因为var_dump 没有返回任何东西,那没什么。所以null . $uid . null 将被连接起来,echod。但早在那之前,两个var_dump 调用已经将它们的输出转储到屏幕上。

        【讨论】: