如何搜索作为对象的数组

时间:2013-09-09 15:16:52

标签: php arrays class foreach

我对array_search函数有点困惑(或者我正在尝试使用不正确的东西。)我有一堆事务对象,(关于客户的事务)每个都是一个值数组。传入电子邮件地址后,我得到一个对象,该对象是使用该电子邮件地址的一个事务。示例如下。我从命令print_r($results)得到它:

    stdClass Object
(
    [OverallStatus] => OK
    [RequestID] => 4564564654-65465464565-4654654
    [Results] => Array
        (
            [0] => stdClass Object
                (
                    [thing1] => 
                    [thing2] => 
                    [Status] => Active
                    [ID] => 5555555555
                    [email_addy] => someaddy@something.com
                )

            [1] => stdClass Object
                (
                    [thing1] => 
                    [thing2] => 
                    [Status] => Active
                    [ID] => 6666666666
                    [email_addy] => someaddy@something.com
                )

            [2] => stdClass Object
                (
                    [thing1] => 
                    [thing2] => 
                    [Status] => Active
                    [ID] => 6666666666
                    [email_addy] => someaddy@something.com
                )

        )

)

我毫不费力地得到这个输出。我的问题是我需要确定某人是否有特定ID。我试图使用foreach但我没有回到我需要的东西。代码和输出如下。

foreach ($results as $key => $value) {      
echo "Key: $key; Value: $value<br />\n"; 
}

输出

Key: OverallStatus; Value: OK

Key: RequestID; Value: 4564564654-65465464565-4654654

Key: Results; Value: Array

我真正需要知道的是,如果客户的ID为5555555555。这个数字将始终保持不变。我在这方向走错了吗?

5 个答案:

答案 0 :(得分:3)

你有object的数组,所以你应该首先得到数组results,然后迭代它,试试这个:

foreach ($results->Results  as $key => $value) {      
 if($value->ID == 55555555) echo 'found at position'.$key;//if id is unique , add a break;
}

答案 1 :(得分:2)

您需要遍历$ results-&gt;结果。

foreach ($results->Results as $key => $value) {    

if($value->ID == 5555555555)
  print "Match found";

}

答案 2 :(得分:1)

您应该再次循环results数组。请尝试关注foreach

foreach ($results as $key => $value) {
    if($key == "Results") {
        foreach($value as $v) {
            if($v->ID == "5555555555") {
                echo "I found you";
                break;
            }
        }
    } else {
        echo "Key: $key; Value: $value<br />\n";
    }
}

答案 3 :(得分:0)

循环'$ results-&gt;结果'并检查循环,如果ID = 5555555555,如下所示:

foreach ($results->Results as $value) {      
    if($value->ID == 5555555555) {
        //do something
    }
}

答案 4 :(得分:0)

它将类似于以下内容:

$transactions = $results->Results;  //get results array

foreach ($transactions as $transaction) { // loop through each transaction object.
    echo $transaction->ID . '<br />';  // print out the id of each transaction.
}