我将Java中的MMAP消息发送到Actudio并使用它们检索它们。 Stomp 在PHP中。我的邮件创建代码如下:
MapMessage message = session.createMapMessage(); message.setInt("id", 42); message.setInt("status", 42); message.setString("result", "aString");
当我在PHP中检索它们时,创建的数组如下所示:
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 ) ) ) ) ) )
我该怎么办?有没有一种方法可以说服Stomp以一种合理的方式取消它的序列化,或者有没有一些PHP咒语可以减少访问这个数组的痛苦?特别是,我不能只迭代条目并构建一个关联数组,因为如果有一个字符串&in t而不是两个字符串,则数组看起来完全不同。
这就是我想出来的。有人知道清洁剂吗?
$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]; }
这给了我:
array 'id' => int 42 'status' => int 42 'result' => string 'aString' (length=7)
这几乎就是我要找的,但到达那里的代码似乎相当脆弱。