0

以下の配列を検討してください。

//$allmembers
Array
(
    [0] => Array
        (
            [id] => 7
            [name] => John Smith
        )
    [1] => Array
        (
            [id] => 8
            [name] => John Skeet
        )
    [2] => Array
        (
            [id] => 9
            [name] => Chuck Norris
        )
    [3] => Array
        (
            [id] => 10
            [name] => Bruce Lee
        )
)

次のような別の配列があります。

//$schedules
Array
(
    [0] => Array
        (
            [id] => 24
            [title] => DAMN DAMN DAMN!
            [description] => 
            [room] => 5022
            [start] => 1362783300
            [end] => 1362783300
            [participants] => 7,8
            [members] => Array
                (
                )
        )
    [1] => Array
        (
            [id] => 22
            [title] => blah blah
            [description] => 
            [room] => 5022
            [start] => 1365024780
            [end] => 1365026280
            [participants] => 9,10
            [members] => Array
                (
                )
        )
)

したがって、2 番目の配列の参加者キーを読み取り、最初の配列から名前を見つけて、2 番目の配列のメンバーに追加する必要があります。

以下のコードを試していますが、これまでのところ成功していません。

$allmembers = $_DB->Query("SELECT id,name FROM members");

for($i = 0; $i < count($schedules); $i++)
{
    $schedules[$i]["members"] = array() ;
    $mems = array();        

    $mems = explode(',', $schedules[$i]["participants"]);                                               

    for($j = 0; $j < count($mems); $j++)
    {
        //How to search the first array?  
    }                          
}
4

1 に答える 1

1

このブロックの上に と の 2 つの配列が存在する場合$schedules$allmembers次のように動作するはずです。

foreach($schedules as &$event)
{
    $participants = array_flip(explode(',', $event['participants']));

    $addThese = array();
    foreach($allmembers as $member)
    {
        if (isset($participants[$member['id']]))
            $addThese[] = $member;
    }

    $event['participants'] = $addThese;
} unset($event);

print_r($schedules);
于 2013-08-08T22:52:49.437 に答える