1

私はいくつかの研究をしました。シリアル化してから非シリアル化して文字列を取得できることがわかりました...しかし、より良い解決策が必要です。

IMAP pearモジュール()から返されたオブジェクト配列を取得しましたfunction imap_getmailboxes

public function GetMailBoxes(){
    $List = imap_getmailboxes($this->Link, '{'.$this->Server.':'.$this->Port.'}', '*');

    $Data = array();
    if(is_array($List)){
        foreach($List as $Key => $Value){
            $Value = unserialize(serialize($Value));
            $In = strpos($Value->name, '{');
            $Out = strpos($Value->name, '}');

            $Part = substr($Value, $Out);
            $Value->real_name = explode($Value->delimiter, imap_utf7_decode($Part));
            $Value->real_name = (isset($Value->real_name[1]) ? $Value->real_name[1] : null);

            $Data[$Key] = $Value;
        }
    }

    return $Data;
}

ここでの問題は、strposがこれを教えてくれることWarning: substr() expects parameter 1 to be string, object given in /home/david/domains/davidbelanger.net/public_html/panel/drivers/mail.php on line 178です。

オブジェクトを文字列に変換するにはどうすればよいですか?どんな考えでも、これまでこれをやったことはありません。

ありがとう。

4

2 に答える 2

4

代わりに

$Part = substr($Value, $Out);

あなたが欲しい

$Part = substr($Value->name, $Out);
于 2012-04-09T20:13:45.697 に答える
0

あなたは魔法の方法をオーバーライドすることができます__toString()

ここに記載されているように:http ://www.php.net/manual/en/language.oop5.magic.php#object.tostring

于 2012-04-09T20:13:49.840 に答える