【问题标题】:What is happening with this PHP echo and how do I resolve it?这个 PHP 回显发生了什么,我该如何解决?
【发布时间】:2010-01-31 22:38:58
【问题描述】:

我正在尝试向 wordpress 模板添加一些逻辑。 我想构建一个简单的 if 条件来检查变量是否等于 26。 变量“$value”必须包含一些额外的隐藏字符,因为当我回显内容时... 26 出现在应该首先出现的回显字符串值之前。 因此,if 条件也不起作用。 这里发生了什么,我该如何解决?

代码:

$value=the_ID();   // a wordpress function which contains the id of the current page/post.
echo "value=(" . $value . ")";

输出:

26value=()

【问题讨论】:

  • 肯定比示例代码显示的要多。其他内容正在打印 26。发布一个最小的完整示例。

标签: php wordpress


【解决方案1】:

这是因为 the_ID() 是一个模板函数:它只会回显 ID;它不返回它。您想改用 get_the_ID()。

【讨论】:

  • 或 ob_start();the_ID();$value=ob_get_clean();为什么有人会这样做?因为他们可以:)(免责声明:不被认真对待)
  • 我是 php 和 wordpress 的菜鸟。谢谢!哪里是查看向我展示 get_the_ID() 函数的 wordpress 文档的最佳位置?
  • @Bart van Heukelom 或者因为他们不是 wordpress 编码器并且不知道 get_the_ID() 存在。 ;)
  • 哇,我对 stackoverflow 的响应速度和质量感到惊讶。我会小心使用这种权力,尽量不要滥用它。再次感谢。
【解决方案2】:

the_ID() 没有返回值,而是将其打印出来。这就是为什么您不能将其分配给该变量的原因。

如果您可以编辑该函数,则让它返回该值(尽管这可能会破坏正在使用该函数的应用程序的其他部分)。或者像这样捕获它:

ob_start();
the_ID();
$value = ob_get_clean();
echo "value=(" . $value . ")";

【讨论】:

    【解决方案3】:

    当您注释掉回声时会发生什么? 26 还会出现吗?如果是这样,那么该函数会回显它而不是返回它。

    使用var_dump打印出变量的内容进行调试:

    var_dump( $value );
    

    【讨论】:

    • 同意。你知道它是否是一个字符串,它包含多少个字符等等。
    【解决方案4】:

    看起来the_ID() 与 ID 本身相呼应。

    【讨论】:

      【解决方案5】:

      你可以这样做:

      echo "value=(".the_ID().")";
      

      或者,如果您想分配值以便稍后在脚本中使用,则:

      $value=get_the_ID();
      echo "value=($value)";
      

      你说你想在脚本中使用if,这样可以类似地工作 -

      if(get_the_ID()==26){/*do whatever*/}
      

      如果您之前分配过 $value==26,您当然也可以使用它。

      【讨论】:

        【解决方案6】:

        许多人建议the_ID() 做回声。您可以在这里做一些事情。

        首先,看看WordPress是否有返回ID而不是打印它的功能(我个人不知道)。

        其次,你可以重新排列代码,让它按你喜欢的方式打印……像这样

        echo "value=(" . the_ID() . ")";

        echo "value=("; the_ID(); echo ")";

        第三,如果你真的想把它放在一个变量中,你可以捕获回显输出。像这样

        ob_start();
        the_ID();
        $Value = ob_get_contents();
        ob_end_clean();
        echo $Value;
        

        希望这会有所帮助。

        【讨论】:

          【解决方案7】:

          我敢打赌,你调用的函数会回显数字 26..

          所以.. value 实际上 = null..

          所以 the_ID() 可能是这样的函数:

          function the_ID(){
              $id = 26;
              echo $id;
          }
          

          ie:它不返回任何东西,它会回显结果。 (如果您浏览 wordpress 源代码,您可能会确切地了解正在发生的事情......并找出 the_ID() 实际从哪里获取页面 ID。

          我快速搜索了一下wordpress的说明:

          注意:此函数显示的ID 帖子,返回ID使用 获取_the_ID()。用法

          <?php the_ID(); ?>

          所以你使用了错误的功能

          使用 get_the_ID() 而不是 the_ID()

          the_ID(); //prints teh page id
          $value=get_the_ID(); //returns the page_id
          

          http://codex.wordpress.org/Template_Tags/the_ID

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-07-01
            • 2015-11-12
            • 2015-06-13
            • 2021-07-01
            • 1970-01-01
            • 2021-08-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多