php循环遍历一个对象,仅在满足条件的情况下返回

时间:2012-08-31 15:31:58

标签: php object loops

我是对象的新手,我仍然试图绕过它。

以下是我的情况:

我的信息来自一个格式化为对象的API,其中包含一堆变量:

public 'id' => int 64
public 'taskId' => int 6
public 'projectId' => int 2
public 'type' => string 'progress' (length=8)
public 'text' => string 'bug5279 main branch fix confirmed beta still an issue with bounties' (length=111)
public 'ownerId' => int 3
public 'progress' => int 0
public 'hoursDone' => float 0.25
public 'createdAt' => string '2012-08-28T09:33:51' (length=19)
public 'notifyProjectTeam' => boolean false
public 'notifyTaskTeam' => boolean false
public 'notifyClient' => boolean false
public 'date' => string '2012-08-28T09:33:51' (length=19)

这是我用来生成上面的代码,它返回一堆对象 活动清单

$activityList = $activityClient->getList( $filter, $offset, $count );

这是用户列表

$usersList = $usersClient->getAll();

现在我想要做的只是显示用户名如果​​用户的小时数值> 0

我用谷歌搜索,我可以找到如何循环一个对象,但似乎无法找到正确的关键字来显示条件,因为我对对象的新东西有点丢失。这是我通过

进行简单循环的代码
// get the usernames 
foreach($usersList->items as $user_details) {
$users[$user_details->id]=$user_details->firstName.' '.$user_details->lastName;
}

// get projects
foreach($tasksList->items  as $task_details) 
{
$tasks[$task_details->id]=$task_details->name;
}

以下是我如何循环活动

foreach($activityList->items as $workdetails) 
    {
echo "<br><h2>$username</h2><br>";
}
foreach($tasks as $taskid=>$taskname)
    {
    if($userid==$workdetails->ownerId && $taskid==$workdetails->taskId)
        {
         echo "<br>$workdetails->hoursDone<br>";
         echo "<br>$workdetails->text<br>";
        }
    }

现在问题是我最终得到这样的东西:

约翰 1 致力于电子邮件

詹姆斯

杰里

专利

哈利 2.50 致力于电子邮件

玛丽

萨拉

但我不想让人们出现,除非他们有&gt; 0 for hoursDone。

这是我真正迷失的观点,我不知道从哪里开始说实话。任何答案或示例的链接都会很棒。这是继承代码和我自己的代码的混合。

1 个答案:

答案 0 :(得分:0)

你快到了,只做

   foreach($tasks as $taskid=>$taskname){
       if($userid==$workdetails->ownerId && $taskid==$workdetails->taskId && $workdetails->hoursDone > 0){
           echo "<br>$workdetails->hoursDone<br>";
           echo "<br>$workdetails->text<br>";
       }
   }

我添加了一项检查,以查看hoursDone值是否为&gt; 0