0

基本的に、私はPHP で Yahoo Messenger APIarray()からを受信して​​おり、通知システムを開発中です。チャットから受信したIMと連絡先の両方を含む配列を返します。

Array (
[0] => Array 
    (
        [message] => Array
            (
                [status] => 1
                [sequence] => 0
                [sender] => SenderCurtis
                [receiver] => receiverCurtis
                [msg] => #1
                [timeStamp] => 1374187598
                [hash] => y2qlDf8uTq8tXzgzrsSMyjQB+W2uDg==
                [msgContext] => y2qlDf8uTq8tXzgzrsSMyjQB+W2uDg==
            )

    )

[1] => Array
    (
        [buddyInfo] => Array
            (
                [sequence] => 1
                [contact] => Array
                    (
                        [0] => Array
                            (
                                [sender] => SenderCurtis
                                [presenceState] => 0
                                [avatarUser] => 0
                                [avatarPreference] => 0
                                [clientCapabilities] => 8915971
                                [clientUserGUID] => MI7STHUYOAMCGE5TNTY7CJPFWM
                            )

                    )

            )

    )

[2] => Array
    (
        [message] => Array
            (
                [status] => 1
                [sequence] => 2
                [sender] => SenderCurtis
                [receiver] => receiverCurtis
                [msg] => #2
                [timeStamp] => 1374187601
                [hash] => 3+2s9sIvjPRdvneQsMgVNCKBTFgKwQ==
                [msgContext] => 3+2s9sIvjPRdvneQsMgVNCKBTFgKwQ==
            )

    )

[3] => Array
    (
        [buddyInfo] => Array
            (
                [sequence] => 3
                [contact] => Array
                    (
                        [0] => Array
                            (
                                [sender] => myContactUser1@yahoo.com
                                [presenceState] => 0
                                [avatarUser] => 0
                                [avatarPreference] => 0
                                [clientCapabilities] => 8915971
                                [clientUserGUID] => UQU3WV7ZOZ2OTGLJQUE2QJU4ZU
                            )

                    )

            )

    )

)

メッセージ だけを取得してarray()反復処理するにはどうすればよいですか? 「メッセージ 1」、「メッセージ 2」など...

4

5 に答える 5

0

私はここで SPL イテレーターが好きなので、別の解決策を示します。PHP >= 5.1.0 で動作します。

class MessageIterator extends FilterIterator
{
    public function accept()
    {
        return array_key_exists('message', $this->getInnerIterator()->current());
    }

    public function current()
    {
        $current = parent::current();
        return $current['message'];
    }
}

$iterator = new MessageIterator(new ArrayIterator($array));

foreach ($iterator as $message) {
    print_r($message);
}
于 2013-07-18T23:33:37.240 に答える