Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-组合键多次相同的2个数组_Php_Arrays_Multidimensional Array_Array Difference - Fatal编程技术网

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

PHP-组合键多次相同的2个数组,php,arrays,multidimensional-array,array-difference,Php,Arrays,Multidimensional Array,Array Difference,我有两个数组要组合,但是两个数组中的值相同,但我仍然希望组合它们。这可能吗 假设我有以下数组: 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

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

假设我有以下数组:

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() . "";
    }
试试看{
$stmt=$pdo->prepare(“从poorten中选择deviceid、interfaceoid,其中deviceid='2683'”);
$stmt->execute();
$deviceid=array();
$interfaceoid=array();
如果($stmt->rowCount()>0){
而($row=$stmt->fetch()){
//回显“.$row['deviceid']”:“;
//回显“%$row['interfaceoid']”。
”; $deviceid[]=$row['deviceid']; $interfaceoid[]=$row['interfaceoid']; } $result=array\u combine($deviceid,$interfaceoid); var_dump($结果); } } 捕获(PDO$e){ echo“出现了问题:“.e->getMessage()”; }
使用
设备ID
作为数组键:

$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);

使用
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);
试试这个,对于和

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

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

我想你应该用array_push。@Zooly,这不是我想要的。这只会让他们走到一起,这不是我想要的。数组1和数组2之间存在差异。您期望的输出是什么?我认为您应该使用array\u push。@Zooly,这不是我想要的。这只会让他们走到一起,这不是我想要的。数组1和数组2之间存在差异。您期望的输出是什么?非常感谢。这就是我一直在寻找的,我对开发还很陌生,不知道怎么做。不过我还有一个问题,如果你不介意的话,我怎样才能让每个循环都通过这个呢?也许这似乎是一个愚蠢的问题,但你的代码目前对我来说有点难理解。非常感谢。这就是我一直在寻找的,我对开发还很陌生,不知道怎么做。不过我还有一个问题,如果你不介意的话,我怎样才能让每个循环都通过这个呢?也许这似乎是一个愚蠢的问题,但您的代码目前对我来说有点难理解。