Php 从多个数组中获取正确的值

Php 从多个数组中获取正确的值,php,arrays,echo,Php,Arrays,Echo,我在一个系统上工作,我需要比较两个阵列并回显正确的值 [1] => Array ( [Message] => Array ( [id] => 4f8c74ce-8590-4e8b-a5ba-6f54b2158146 [user_id] => 1 [to_user_id] =>

我在一个系统上工作,我需要比较两个阵列并回显正确的值

[1] => Array
        (
            [Message] => Array
                (
                    [id] => 4f8c74ce-8590-4e8b-a5ba-6f54b2158146
                    [user_id] => 1
                    [to_user_id] => 3
                    [created] => 2012-04-16 21:36:46
                    [last_message_id] => 8
                    [message_count] => 2
                )

            [MessageItem] => Array
                (
                    [0] => Array
                        (
                            [id] => 7
                            [message_id] => 4f8c74ce-8590-4e8b-a5ba-6f54b2158146
                            [user_id] => 1
                            [message] => Whola amigo
                            [read] => 0
                            [created] => 2012-04-16 21:36:46
                        )

                    [1] => Array
                        (
                            [id] => 8
                            [message_id] => 4f8c74ce-8590-4e8b-a5ba-6f54b2158146
                            [user_id] => 1
                            [message] => sdfsdfdsfdsfsdfds
                            [read] => 0
                            [created] => 2012-04-16 21:37:54
                        )

                )

        )
所以。。我想

ECHO ['MessageItem]['message'] WHERE ['MessageItem]['id'] == ['Message]['last_message_id']
不知道如何使用php实现这一点

谢谢你的帮助


-Tom

此简单解决方案适用于给定的示例:

$array = array(
            '1' => array(
                'Message' => array(
                    'id' => '4f8c74ce-8590-4e8b-a5ba-6f54b2158146',
                    'user_id' => 1,
                    'to_user_id' => 3,
                    'created' => '2012-04-16 21:36:46',
                    'last_message_id' => 8,
                    'message_count' => 2
                ),
                'MessageItem' => array(
                    array(
                        'id' => 7,
                        'message_id' => '4f8c74ce-8590-4e8b-a5ba-6f54b2158146',
                        'user_id' => 1,
                        'message' => 'Whola amigo',
                        'read' => 0,
                        'created' => '2012-04-16 21:36:46'
                    ),
                    array(
                        'id' => 8,
                        'message_id' => '4f8c74ce-8590-4e8b-a5ba-6f54b2158146',
                        'user_id' => 1,
                        'message' => 'sdfsdfdsfdsfsdfds',
                        'read' => 0,
                        'created' => '2012-04-16 21:37:54'
                    )
                )
        )
);



$searchKey = $array['1']['Message']['last_message_id'];

foreach ($array['1']['MessageItem'] as $messageItemArray) {
    if ($searchKey == $messageItemArray['id']) {
        echo $messageItemArray['message'];
    }
}

为此,必须使用for循环进行扫描

for($i=0; $i<count([MessageItem]);$i++){
 if(['MessageItem'][$i]['id'] == ['Message']['last_message_id']){
  echo ['MessageItem'][$i]['id'];
 }
}
$i=0;$i的

其中,array_find()与PHP类似,只是它采用布尔回调函数而不是固定值。请调整匹配回调函数以适合您要查找的内容


另请参见:

您使用的是哪一版本的PHP?具体来说,它是否>=5.3,以便您可以使用匿名函数?5.3.2..提供解决方案;)谢谢。。工作完美无瑕;)
/**
 * Searches an array for the first element for which 
 * $match_callback returns true.
 *
 * @return mixed The key of the matching entry, or FALSE if no match was found.
 */
function array_find(array $haystack, $match_callback) {
    foreach ($haystack as $key => $value) {
        if ($match_callback($key, $value)) {
            return $key;
        }
    }
    return false;
}

$matching_key = array_find($my_array['MessageItem'], function($key, $messageItem) use ($my_array) {
    return $messageItem['id'] === $my_array['Message']['last_message_id'];    
});

echo 'Found key: ' . $matching_key .PHP_EOL; // 1
echo 'Message: ' . $my_array['MessageItem'][$matching_key]['message']; // sdfsdfdsfdsfsdfds