【问题标题】:Merging and array by value instead of key in PHPPHP中按值而不是键合并和数组
【发布时间】:2025-12-27 03:40:07
【问题描述】:

我有两个想要组合的值数组 - 但 PHP 提供的唯一方法似乎是通过键而不是值组合。这是我可以用来让它工作的黑客,但我想知道是否有更好的方法或我错过的本机功能。自从我上次使用数组以来已经有一段时间了,似乎有一个简单的答案。

//Input arrays that we want to combine into one array
$array = array(2, 3, 4, 5);
$array2 = array(5, 6, 1);

//Flip values and keys
$array = array_flip($array);
$array2 = array_flip($array2);

//Combine array
$array3 = $array2 + $array;

//flip array keys back to values
$array3 = array_keys($array3);

//Optional sort
sort($array3);

print_r($array3);

返回两个数组的组合值:

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

【问题讨论】:

  • 你知道两个相等的值会覆盖两个不同的键吗?
  • 这就是重点。我正在尝试按值组合数组,而不考虑键(无论如何都是通过排序编写的)。
  • 我对你的用例可能是什么很着迷。这是一个有趣的问题,但我对为什么要这样做?感到困惑
  • 就像马克说的那样,“我假设您正在尝试组合 2 个数组而没有任何重复”。我有一个来自一个位置的整数数组和另一个来自另一个地方的数组,我需要将它们组合在一起而不重复。

标签: php arrays


【解决方案1】:

不完全确定您要完成什么。我假设您正在尝试组合 2 个数组而没有任何重复。如果是这种情况,那么以下将起作用

$newarr = array_unique(array_merge($array, $array2));

【讨论】:

  • 我也认为这可以解决问题,在问题中提出。