【问题标题】:What is wrong with this please?请问这有什么问题?
【发布时间】:2015-11-10 14:01:58
【问题描述】:

$width 的值得到很好的回显,并且与浏览器宽度一致,但 if 语句不执行。

<?php 
$width = "<script>document.write(window.outerWidth); </script>";
echo($width);
if ($width > 599) {
    echo do_shortcode('[codepeople-html5-media-player id="1"]');
} else {?>
    <img src="/wp-content/uploads/2015/04/copy-jandp-logo2.png" alt="logo" /> 
<?php } ?>

【问题讨论】:

  • $width 是一个字符串,而不是一个数字.... 在运行 PHP 的网络服务器上定义一个包含 $width = "&lt;script&gt;document.write(window.outerWidth); &lt;/script&gt;" 的字符串不会自动在网络浏览器上执行 JavaScript 函数并将结果返回给服务器上的 PHP
  • 这一切看起来像是前端代码,为什么还要在那里使用 PHP?这一切都可以用JS来完成。
  • 您正在混合服务器端解析和客户端解析。也许做和 ajax 调用,其中包括你的宽度,解析你的简码,最后返回并显示它。或更好地使用 CSS(媒体查询)来隐藏您不需要的部分并显示您的图像

标签: php


【解决方案1】:

正如我在评论中所说,使用 CSS 媒体查询来达到你想要的效果。

PHP 代码:

echo '<div class="codepeople-sc">', do_shortcode('[codepeople-html5-media-player id="1"]'), '</div>';
echo '<div class="codepeople-img"><img src="/wp-content/uploads/2015/04/copy-jandp-logo2.png" alt="logo" /></div>';

CSS 样式:

.codepeople-sc{ display: none; }
.codepeople-img{ display: block; }
@media (min-width: 599px){
    .codepeople-sc{ display: block; }
    .codepeople-img{ display: none; }
}

【讨论】:

    【解决方案2】:

    在您的 PHP 代码中,$width 是一个字符串。所以通过将if ($width &gt; 599)更改为if ( strlen( $width ) &gt; 599 )来实现你想要的

    【讨论】:

    • 为什么 OP 想要字符串长度?显然他们正在尝试比较window.outerWidth 的结果,我认为真正的 问题来自尝试混合JS 和PHP
    • 如果您可能想要 parseInt 而不是 strlen... 无论如何,在该代码中使用 PHP 是可怕的;意大利面条代码的好例子
    • 糟糕!我没有“阅读” OP 的意图。显然,OP 想知道$width 是否大于599,而不是$width 的长度是否大于599。但是,@musefan 是对的:将 JS 与 PHP 混合是非常糟糕的。在这种情况下,情况就更糟了:)
    【解决方案3】:

    当您将双引号下的任何内容分配给变量时,它就是一个字符串。
    即:str = "I am a string"; # 字符串
    即:num = 23; # 号码

    当您执行 if 语句时,$width 是一个字符串比较
    到一个数字,因此,它不会执行。如果您创建一个字符串
    (ie: x="15") 您可以将其转换为整数。

    parseInt() 函数解析一个字符串并返回一个整数。
    希望它有所帮助。祝你好运!

    【讨论】:

    • 您认为该字符串会解析为 int 吗?
    • @musefan Lol 不,该字符串不会解析为 int。
    • 它总是一个包含“
    • 不要将服务器端解析与客户端解析混为一谈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多