1

我对 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. 这个数字将始终保持不变。我在这里走错方向了吗?

4

5 回答 5

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;
}
于 2013-09-09T15:26:42.740 回答
2

您需要遍历 $results->Results。

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

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

}
于 2013-09-09T15:27:15.980 回答
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";
    }
}
于 2013-09-09T15:26:22.487 回答
0

如果 ID=5555555555 像这样循环遍历 '$results->Results' 并检查循环:

foreach ($results->Results as $value) {      
    if($value->ID == 5555555555) {
        //do something
    }
}
于 2013-09-09T15:26:17.597 回答
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.
}
于 2013-09-09T15:28:57.693 回答