修改循环以显示所有实例的消息1次

时间:2011-06-02 18:38:06

标签: php

我的代码检查twitter墙的前3条消息,并查找名为“code”的字符串。如果它在那里它将回显“代码可用”,如果不是它将回应“无代码”。现在,它为每条消息回复了3次。

如何修改此代码以便仍然检查所有3条消息,但只回显所有墙贴的“无代码”或“可用代码”消息?

function echo_messages($url,$max = 1)
{
     $data = json_decode(file_get_contents($url));
     $counter = 0;
     foreach($data->data as $post) 
     {
        preg_match("/code/", $post->message, $code);        
        echo '<div id="facebook">';
        if (strlen($code[0]) == 0){
            echo 'Facebook: No Code';
        }else{
            echo 'Facebook: Code Available';
        }
        echo '</div>';
       $counter++;
       if($counter >= $max)
       {
           return true;
       }
    } 
}
echo_messages('https://graph.facebook.com/234265435775/posts',3);

2 个答案:

答案 0 :(得分:1)

这个怎么样:

function echo_messages($url,$max = 1) {
     $data = json_decode(file_get_contents($url));
     $counter = 0;
     foreach($data->data as $post) 
     {
        preg_match("/code/", $post->message, $code);        
        if (strlen($code[0])!= 0){
            echo '<div id="facebook">Facebook: Code Available</div>';
            return;
        }
        $counter++;
        if($counter >= $max) break;
    } 
    echo '<div id="facebook">Facebook: No Code</div>'; 
}

echo_messages('https://graph.facebook.com/234265435775/posts',3);

它会持续$max次。一旦找到代码,它就会停止处理并报告。如果它没有找到代码$max次,或者记录不足 - 它将报告没有找到代码。你要求的唯一不做的就是运行3次,无论它是否在第一条消息中找到代码(但我无法想象你为什么要它做那种不必要的处理!)。

顺便说一句,返回一个表示是否找到代码的true / false会更好,然后在函数外面构造你的消息。

function hasCode($url,$max=1) {/*...*/}
echo "<div id=\"facebook\">Facebook: ".
    (hasCode('https://graph.facebook.com/234265435775/posts',3)?
      "Code Available":"No Code").
     "</div>";

答案 1 :(得分:0)

function echo_messages($url,$max = 1)
{
    $data = json_decode (file_get_contents ($url));
    $result = 'No Code';
    foreach (new LimitIterator (new ArrayIterator ($data->data), 0, $max) as $post)
    {
        if (preg_match ('/code/i', $post->message))
        {
                $result = 'Code available';
                break;
        }
    }

    printf ('<div id="facebook">Facebook: %s</div>', $result);
}