【问题标题】:Summing all values in PHP while loop在 PHP while 循环中对所有值求和
【发布时间】:2015-07-17 05:41:28
【问题描述】:

新手问题:/

我有一个返回值的 API,我只想获取 XML 中的元素数量,但每个查询限制为 30 个。

function SOMEfunction($number){
   $curl = curl_init("*URL*?format=xml&page=" . $number);
   $result = curl_exec($curl);
   $xml = simplexml_load_string($result);
   $ttn = $xml->count();
   echo "$ttn<br>";
}

所以, 因为我只想获取 XML 中元素的数量,所以我运行了一个短暂的 while 循环,我想以某种方式对其进行求和。

$sum=0;
$num=1;
while ($num < 7)
{
   $sum += SOMEfunction($num);
   $num++;
}
echo $sum;

当前输出是:

30
30
30
30
2
0
0

我如何总结它们?

谢谢。

【问题讨论】:

  • 你的函数没有返回值。 echo "$ttn&lt;br&gt;"; 应该是 return $ttn; 尝试进行更改并将其与我发布的答案结合起来,看看是否有效。
  • 您没有使用传递给函数的参数。甚至传递值的语法似乎也不正确。 VALUE 可能会被 PHP 视为常量。
  • $curl 的值从何而来?它是什么样子的。也许您应该将$curl 作为参数传递给您的函数来代替VALUE。我不确定这是否会奏效。
  • 您当前的函数代码只会回显该值,但不会将它们分配给$sum 变量。理想情况下,您甚至不应该获得当前获得的输出。它应该只是一个值。

标签: php loops while-loop do-while


【解决方案1】:

SOMEfunction应该返回一个值,而不是打印出来,如下:

function SOMEfunction($number){
   $curl = curl_init("*URL*?format=xml&page=" . $number);
   $result = curl_exec($curl);
   $xml = simplexml_load_string($result);
   $ttn = $xml->count();
   return $ttn;
}

【讨论】:

    【解决方案2】:

    试试这个:

    $sum=0;
    $num = 1; 
    do { 
     $sum += SOMEfunction($num);
     $num++;
    } while ( $num > 0 && $num < 7 ); 
    
    echo $sum;
    

    这假设包括SOMEfunction 在内的其余代码工作正常。您也可以重新考虑 while 循环,但我对此并不完全确定。

    另一种方法:

    $sum=0;
    $num=1;
    while ($num < 7)
    {
       $sum += SOMEfunction($num);
       $num++;
    }
    echo $sum;
    

    试试这个,看看它是否有效。如果没有,那么我不确定您的 SOMEfunction 是否正常工作。

    【讨论】:

    • 是的,这个 do while 循环看起来像 for($num=1;$num&lt;6;$num++)。但我认为这是一个while循环,测试应该是SOMEfunction是否返回0。
    • 但是在这种情况下如何获得总和。你想用你的方法添加另一个答案吗?
    • 您好,感谢您的回复。 SOMEfunction 返回每个 XML 元素的计数...不总是 0。当我添加建议的代码 maximus 并删除我的回声时,我现在得到的值为 0。我的初始值可能不是数字吗?
    • 尝试按照@Niols 的建议将您的do/while 循环转换为for 循环,看看您会得到什么?
    • 看看更新后的答案,看看是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2014-10-19
    • 2013-06-12
    相关资源
    最近更新 更多