每个网址都显示一个数字,但是当我回显$ z时,它会显示0而不是所有数字组合的大组...
我做错了什么?
<?php
$a = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=Battery+Theme&output=text\"></script>";
$b = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=Connection+Theme&output=text\"></script>";
$c = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=Icon+Theme&output=text\"></script>";
$d = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=Percent+Theme&output=text\"></script>";
$e = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=StatusNotifier+Theme&output=text\"></script>";
$f = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=c-note&output=text\"></script>";
$g = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=iAcces+c-note+KB&output=text\"></script>";
$h = "<script type=\"text/javascript\" src=\"http://modmyi.com/cstats/index.php?package=c-note+Lite&output=text\"></script>";
$z = $a+$b+$c+$d+$e+$f+$g+$h;
echo $z;
?>
答案 0 :(得分:2)
您希望连接字符串,但您添加字符串。字符串添加首先将每一侧转换为数字并返回一个数字。
改为使用字符串concatenation operator (.
):
$z = $a.$b.$c.$d.$e.$f.$g.$h;
或插值:
$z = "$a$b$c$d$e$f$g$h";
或使用数组并加入:
$z = implode('', array($a, $b, $c, $d, $e, $f, $g, $h));
答案 1 :(得分:2)
您正在将服务器端脚本(PHP)与客户端脚本(JS)混合使用。
当您请求PHP页面时,服务器会解释该页面,然后将其作为HTML文档提供给客户端。这就是为什么如果你在浏览器中查看PHP页面的来源,你将看不到任何PHP代码。
在处理PHP之后,将在客户端上执行那些<script>
。虽然服务器正在处理你的PHP,但这些只是字符串,所以你只需添加一些字符串(结果为0)。
因此,如果您需要PHP中的总和,则不应使用JS来调用这些页面。
有几种方法可以做到这一点,但我会使用cURL
来获取页面结果(请参阅例如this example)然后对结果求和(您必须将其转换为int在总结之前)。
答案 2 :(得分:1)
首先,在页面传递到Web浏览器之前处理PHP。之后会处理Javascript。因此,您的PHP变量只是您在脚本中编写的字符串文字。
要理解结果为0的原因,请阅读PHP如何将字符串转换为整数:http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion
答案 3 :(得分:1)
我认为这是解决方案
<?php
$a = file_get_contents("http://modmyi.com/cstats/index.php?package=Battery+Theme&output=text");
$b = file_get_contents("http://modmyi.com/cstats/index.php?package=Connection+Theme&output=text");
......
$z = $a+$b+$c+$d+$e+$f+$g+$h;
echo $z;
?>
答案 4 :(得分:0)
除了strager所说的,IMO你通过使用字符串一起模板化HTML有点不对劲。 PHP是一种模板语言,您也可以使用它:
<?php
$packages= array(
'Battery Theme', 'Connection Theme', 'Icon Theme', 'Percent Theme',
'StatusNotifier Theme', 'c-note', 'iAcces c-note KB', 'c-note Lite'
);
?>
<?php foreach ($packages as $package) { ?>
<?php $src= 'http://modmyi.com/cstats/index.php?package='.urlencode($package).'&output=text'; ?>
<script type="text/javascript" src="<?php echo htmlspecialchars($src); "></script>
<?php } ?>
(注意HTML编码,以避免src
中无效的未转义的&符号。)