как объединить эти 2 массива (php + sql) - PullRequest
0 голосов
/ 18 июня 2011

У меня есть 2 массива, оба из запроса SQL, каждый из своей базы данных. Поскольку невозможно объединить эти 2 запроса SQL в 1 запрос, чтобы получить 1 массив (из-за некоторых ограничений), я вынужден объединить 2 массива. Проблема в том, что я не могу заставить это работать.

Это массив 1:

echo '<ul id="friends">';
    foreach($result as $friend => $value)
        {
            echo '<li><img src="'.$value['pic_square'].'" alt="" />'.$value['uid'].' ' . $value['name'] . '</li>';
        }
    echo '</ul>';

И выведет:

  • картинка 12345 Дейв
  • картинка 67890 Майк
  • Etc

Это массив 2:

echo '<ul id="friends">';
    while($value = mysql_fetch_array($query))
        {
        echo '<li> '.$value['fbid'] .' '. $value['userphone'] .'</li>';

        }
    echo '</ul>';

И выведет:

  • 12345 020-12345
  • 67890 020-56789
  • Etc

Что мне нужно? Я хочу объединить эти 2 массива так, чтобы phonenr из массива 2 был добавлен за именем пользователя из массива 1.

Пример того, как должен выглядеть вывод:

  • картинка Дейва 020-12345
  • картинка Майка 020-56789
  • Etc

fbid и uid - это идентификаторы для связи друг с другом, но они не отображаются в объединенном массиве.

Надеюсь, кто-то знает, как это сделать!

С уважением,

Maurice

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Это самый простой и эффективный способ, которым я мог бы заниматься.Цикл foreach перебирает ваш первый массив и в основном добавляет новые пары ключ / значение, используя «uid» в качестве ключа.Это позволит вам легко находить их, когда вы просматриваете результаты второго запроса.

<?php

// First query.
foreach ( $result as $key => $value )
{
  // Add a new key/value pair in the array using the "uid" as the key and $value as the value.
  $result[$value['uid']] = $value;

  // Remove the previous key/value pair value.
  unset($result[$key]);
}

// Second query.
while ( $value = mysql_fetch_array($query) )
  echo sprintf('<li>%s %s %s</li>', $result[$value['fbid']]['pic_square'], $result[$value['fbid']]['name'], $value['userphone']);
0 голосов
/ 18 июня 2011

Поскольку имена коллекций массивов разные (разные имена столбцов), я не уверен, что прямое слияние будет работать.

$result = array_merge($result, $query);
print_r($result);

Но вы можете обойти, как показано ниже.

Давать циклы и сохранять в третьем массиве из обоих массивов и выполнять необходимые действия в третьем массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...