如何合并这两个数组(php + sql)

时间:2011-06-18 00:08:43

标签: php sql arrays merge

我有两个来自SQL查询的数组,每个数组来自不同的数据库。由于无法将这两个SQL查询合并为一个查询以获得1个数组(由于某些限制),我不得不将这两个数组合并。问题是,我似乎无法使其发挥作用。

这是数组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 Dave
  • 图片67890迈克

这是数组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

我需要什么?我想合并这两个数组,以便数组2中的phonenr将添加到数组1的用户名后面。

示例输出应该是什么样的:

  • 图片Dave 020-12345
  • 图片Mike 020-56789

fbid和uid是相互链接的id,但不会显示在组合数组中。

希望有人知道怎么做!

亲切的问候,

莫里斯

2 个答案:

答案 0 :(得分:1)

这是我能想到的最简单,最有效的方法。 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']);

答案 1 :(得分:-1)

由于数组集合名称不同(不同的列名称),我不确定直接合并是否有效。

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

但你可以像下面那样解决。

从两个数组中给出循环并存储在第三个数组中,并对第三个数组执行必要的操作。