2010-06-08 15 views
5

MapMessages'ı Java'da ActiveMQ'ya gönderip PHP'de Stomp'u kullanarak gönderiyorum. Mesajım oluşturma kodu şöyle:Stomp'un MessageMap formatı tamamen kullanılamaz mı?

MapMessage message = session.createMapMessage(); 
message.setInt("id", 42); 
message.setInt("status", 42); 
message.setString("result", "aString"); 

PHP bunları almak, bu gibi görünür yarattı dizi:

Array (
[map] => Array (
     [0] => Array (
       [entry] => Array (
         [0] => Array (
           [string] => id 
           [int] => 42 
          ) 

         [1] => Array (
           [string] => status 
           [int] => 42 
          ) 

         [2] => Array (
           [string] => Array (
             [0] => result 
             [1] => aString 
            ) 
          ) 
        ) 
      ) 
    ) 
) 

Bununla ne yapacağım ne olacak? Stomp'u makul olmayan bir şekilde serpiştirmeye ikna etmenin bir yolu var mı yoksa PHP'nin bu diziye erişimini daha az ağrılı hale getirmesi için bir PHP var mı? Özellikle, girişler arasında yinelemem ve ilişkisel bir dizi oluşturamıyorum çünkü dizinin iki dizeye karşılık olarak bir dize & int olması durumunda tamamen farklı görünüyor.

cevap

1

İşte neye vardım. Daha temiz bir çözüm bilen var mı? Hemen hemen aradığım budur

array 
    'id' => int 42 
    'status' => int 42 
    'result' => string 'aString' (length=7) 

ama oraya kod oldukça kırılgan görünüyor:

$entries = $msg->map['map'][0]['entry']; 
$map = array(); 
foreach($entries as $entry) { 
    $vals = array_values($entry); 
    if(count($vals) == 1 && is_array($vals[0])) { 
     $vals = $vals[0]; 
    } 
    $map[$vals[0]] = $vals[1]; 
} 

Bu bana verir.