在匹配时将不同的阵列单元组合到一个阵列

时间:2014-04-24 17:42:15

标签: php arrays

我无法理解如何做以下事情。我有两个不同的长度和不同的维度数组,我想要组合,以便结果数组将有array1 + array2单元格不匹配。

这可以帮助您理解我的意思

$dbquery_results1[0][] = array("1","5","b99");
$dbquery_results1[1][] = array("4","12","www");
$dbquery_results1[2][] = array("10","32","ccc");
$dbquery_results1[3][] = array("7","142","xx");

$dbquery_results2[0][] = array("c","10");
$dbquery_results2[1][] = array("as","1");
$dbquery_results2[2][] = array("fe","7");

$dbquery_combination[0][] = array("1","5","b99","as");
$dbquery_combination[1][] = array("7","142","xx","fe");

我想做什么

      $i=0;
 while(!empty($dbquery_results1[$i][0])) {
        If($dbquery_results1[$i][0] == $dbquery_results2[any of the dimensions here][2])  
          {
              $dbquery_combination[] = $dbquery_results1[$i][]+ $dbquery_results2[x-dimension][2];
         }  $i++;
            }

因此,只有当array1的[] [0]值与array2相同[任何维度] [1]时,array1 +不同的array2单元格才会保存在array3中。

抱歉,我不太善于表达自己。非常感谢。

2 个答案:

答案 0 :(得分:1)

所以,如果你没有选择,你可以这样做:

<?php
$dbquery_results1[0] = array("1","5","b99");
$dbquery_results1[1] = array("4","12","www");
$dbquery_results1[2] = array("10","32","ccc");
$dbquery_results1[3] = array("7","142","xx");

$dbquery_results2[0] = array("c","10");
$dbquery_results2[1] = array("as","1");
$dbquery_results2[2] = array("fe","7");

foreach($dbquery_results1 as $line_r1)
{
    foreach($dbquery_results2 as $line_r2)
    {
        if($line_r1[0] == $line_r2[1])
        {
            $line = $line_r1;
            $line[] = $line_r2[0];

            $dbquery_combination[] = $line;
        }
    }
}

print_r($dbquery_combination);
?>

结果是:

Array (
        [0] => Array ( [0] => 1 [1] => 5 [2] => b99 [3] => as )
        [1] => Array ( [0] => 10 [1] => 32 [2] => ccc [3] => c )
        [2] => Array ( [0] => 7 [1] => 142 [2] => xx [3] => fe )
      )

答案 1 :(得分:0)

我认为你使问题复杂化了。我想你的数组是SQL请求的结果?如果是这种情况,您应该更喜欢使用联合SQL请求。

// Coment答案:他们是否在同一台服务器上?如果是,您可以通过指定完全限定条件同时在多个数据库上发出请求。