PHP - 组合键多次相同的 2 个数组

PHP - Combine 2 arrays where key is the same multiple times

我有 2 个数组想要合并,但是两个数组中的值相同,但我仍然希望合并它们。这可能吗?

假设我有以下数组:

Array ( [0] => 2683 [1] => 2683 [2] => 2683 [3] => 2683 [4] => 2683 [5] => 2683)

Array ( [0] => 2097152 [1] => 4194304 [2] => 6291456 [3] => 8391910 [4] => 234889216 [5] => 234889280)

我使用了 array_combine 但它只显示 1 个值。在这种情况下,我希望它们的键允许重复,或者至少以某种方式将它们放在一个数组中,我可以简单地循环遍历它们。

数组可以吗?或者其他人有更好的解决方案吗?我必须稍后循环遍历它们并获得匹配的值,这就是重点。 如果有帮助,请在我的代码下方。

try {
      $stmt = $pdo->prepare("SELECT deviceid, interfaceoid FROM poorten WHERE deviceid = '2683'");
      $stmt->execute();

      $deviceid = array();
      $interfaceoid = array();

      if($stmt->rowCount() > 0) {
        while($row = $stmt->fetch()) {
          //echo "" . $row['deviceid'] . " : ";
          //echo "" . $row['interfaceoid'] . "</br>";

          $deviceid[]     = $row['deviceid'];
          $interfaceoid[] = $row['interfaceoid'];
        }

        $result = array_combine($deviceid, $interfaceoid);
        var_dump($result);
      }
    }
    catch(PDOException $e) {
      echo "Something went wrong: " . $e->getMessage() . "";
    }

使用deviceid作为数组键:

$result = [];
if ($stmt->rowCount() > 0) {
    while ($row = $stmt->fetch()) {

        if (!isset($result[$row['deviceid']])) {
            $result[$row['deviceid']] = [];
        }

        $result[$row['deviceid']][] = $row['interfaceoid'];
    }
}

var_dump($result);

试试这个,live demo and live demo

foreach($values as $k => $v)
{
    $result[$keys[$k]][] = $v;
}
$result = array_map(function($v){return count($v) > 1 ? $v : $v[0];}, $result);