PHP计算for循环中if条件语句的值

时间:2014-04-10 00:49:01

标签: php

我有一个PHP代码,可以查看是否存在一张或多张图片。如果图片存在,我想计算它们并回答答案。这是我的代码:

<?php
//Start Pictures section - dictates that if there are pictures this section is shown - if not this section is now shown.
for ($x=1; $x<=21; $x++)  {
    if($x<=9) {
        $picValue = 'picture0'.$x;
    }
    else {
        $picValue = 'picture' . $x;
    }

    $imageURLpixel = ABSOLUTE_URL_IMG.$code.'/pixel/'. $picValue .'.jpg';

    //Check if the image exists or not
    $pictureCount = 1;
    if (@fopen($imageURLpixel,'r')) {
    $pictureCount++;    
    $pictureCounter = count($pictureCount);
    }

 echo $pictureCounter;

} 

?>

我的示例中有3张图片,输出为111111111111111111111 - 我的输出为 3 。我的错误日志中没有出现任何错误。

3 个答案:

答案 0 :(得分:2)

只是说清楚。 解决方案直到这个解决方案都在解决问题&#34;一些问题&#34;使用代码,但不是全部。

这是我的方法,使其清晰,易懂和易读 - 可能是一些学习曲线等。

$baseUrl = ABSOLUTE_URL_IMG.$code.'/pixel/';
$pictureCount = 0;

// for the first 20 pictues
for ($x=0; $x<21; $x++)  {
      // make it more readable and practical - see "sprintf"-documentation.
      $filename = sprintf('picture%02d.jpg', $x+1); // < is "one-based index"

      $fileUrl = $baseUrl . $filename;

      // if url exists, increase counter;
      if (@fopen($fileUrl,'r')) 
            $pictureCount++;

 }
 // total count of existing images.
 echo $pictureCount; 

答案 1 :(得分:0)

$pictureCount++;    
$pictureCounter = count($pictureCount);

上面的第一行包含找到的图片数量。所以你不需要做任何其他的事情来获得那个使得下一行不必要的计数。这很重要,因为您错误地使用了count()count()用于计算数组中元素的数量。 $pictureCount 不是数组。

此外,您应该将$pictureCount初始化为零,除非您知道已经考虑了一张图像。否则你的总数将被夸大。

此外,您初始化$pictureCount并在循环内回显它。这两个部分都需要在你的循环之外。

更正后的代码:

$pictureCount = 0;
for ($x=1; $x<=21; $x++)  {
    if($x<=9) {
        $picValue = 'picture0'.$x;
    } else {
        $picValue = 'picture' . $x;
    }

    $imageURLpixel = ABSOLUTE_URL_IMG.$code.'/pixel/'. $picValue .'.jpg';

    //Check if the image exists or not
    if (@fopen($imageURLpixel,'r')) {
      $pictureCount++;    
    }
} 
echo $pictureCount;

答案 2 :(得分:0)

1,请参阅我对您问题的评论。您不希望count() $pictureCount

2,你在for循环中回应。 count($pictureCount)总是输出1,但在你的情况下,每次你的for循环迭代。尝试更像这样的代码:

$pictureCount = 1;
for ($x=1; $x<=21; $x++)  {
    if($x<=9) {
        $picValue = 'picture0'.$x;
    } else {
        $picValue = 'picture' . $x;
    }

    $imageURLpixel = ABSOLUTE_URL_IMG.$code.'/pixel/'. $picValue .'.jpg';

    //Check if the image exists or not
    if (@fopen($imageURLpixel,'r')) {
        $pictureCount++;
    }
}

echo $pictureCount;