php添加数字

时间:2010-08-21 10:36:57

标签: php

每个网址都显示一个数字,但是当我回显$ 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;
?>

5 个答案:

答案 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中无效的未转义的&符号。)