如果函数结果为空,则循环函数

时间:2016-10-06 06:13:43

标签: php loops while-loop

我很难解决我的代码...... 有人,能帮帮我吗...

到目前为止,这是我的代码......

    $r = get_pht_desc($wordString);

    if (empty($r)) {

        while (count($r) < 1 ) {
            $r1 = get_pht_desc($wordString);
            print_r ($r1);
        }

    } else {    
        print_r ($r);   
    }

我想要的是:
如果我的函数 $ r = get_pht_desc($ wordString)的结果为空,它将重复函数,直到结果不为空或大于零。

注意 $ r 的结果是一个数组,因此我使用 count 检查结果是否为空

我尝试了很多方式,我认为这样做但仍然没有奏效。 while函数给了我结果

Array ( ) Array ( ) Array ( ) Array ( ).... 

直到无限......

提前致谢

4 个答案:

答案 0 :(得分:0)

我认为你的想法是$r不应该是空的;您的循环仅在$r为空时输入,旨在保证$r在退出时不为空。

因此,您最后可以在处打印$ r

$r = get_pht_desc($wordString);

if (empty($r)) {
    while (count($r) < 1 ) {
        $r1 = get_pht_desc($wordString);

}

// $r is always filled now. No need to put the print 
// in the else part.
print_r ($r);   

作为一种风格问题:PHP有do-while循环,您可以在这里使用:在任何情况下都需要一次读取,并且想要在之后仅检查是否$r是空的:

do { $r1 = get_pht_desc($wordString); } while (count($r) < 1 );

// $r is always filled now. No need to put the print 
// in the else part.
print_r ($r);   

这看起来很整洁。

答案 1 :(得分:0)

如果我理解正确使用此

$r = get_pht_desc($wordString);

foreach( $r as $i => $result ){
  if( !empty($result) ){
    print_r($result):
  }
}

答案 2 :(得分:0)

使用以下代码

$r = array();
while (empty($r)) {
    $r = get_pht_desc($wordString);
}
print_r ($r);   

但我认为这将是无限循环get_pht_desc($ wordString)返回空结果bcoz可能每次返回相同的结果。

答案 3 :(得分:0)

首先,如果你不对这个函数检查数据的次数($ r)施加限制,那就太危险了。 我添加的限制(例如10)函数最多会被调用10次(以节省无限循环)。您还可以在循环内添加睡眠以等待几秒钟并再次检查(如果您不添加睡眠,它将在几毫秒内调用函数10次)。

试试这段代码:

&#13;
&#13;
$r = array() 
$count = 0;

do{  
$r = get_pht_desc($wordString);
$count++;
} while(!empty($r) && $count <= 10)

print_r($r);
&#13;
&#13;
&#13;