将一个平面数组的值按另一个平面数组的对应值进行分组

发布于 2024-11-08 20:39:06 字数 688 浏览 0 评论 0原文

我在 PHP 中有两个数组:

Array1
(
    [0] => 1
    [1] => 2
    [2] => 2
)
Array2
(
    [0] => 18
    [1] => 19
    [2] => 20
)

Array1 包含送货地址的 ID。 Array2 包含联系人的 ID。

Array1Array2 已“对齐”,以便联系人 18 (Array2[0]) 位于递送地址 ID #1 (Array1) [0])(依此类推)。

我想要的是使用 Array1 的唯一值作为 Array3 的数组键,并将 Array2 的值​​用作数组值>数组3。

最终结果是联系人按其送货地址进行“分组”。

就像这样:

Array 3
(
   [1] = array (
                 [0] => 18
               )
   [2] = array (
                 [0] => 19
                 [1] => 20
               )
)

I have two arrays in PHP:

Array1
(
    [0] => 1
    [1] => 2
    [2] => 2
)
Array2
(
    [0] => 18
    [1] => 19
    [2] => 20
)

Array1 contains the Ids of Delivery Addresses.
Array2 contains the Ids of Contacts.

Array1 and Array2 are 'aligned' so that Contact 18 (Array2[0]) resides at Delivery Address Id #1 (Array1[0]) (and so on).

What I would like is use the unique values of Array1 as array keys for Array3, and the values of Array2 used as the array values Array3.

The end result being that Contacts are 'grouped' by their Delivery Address.

Like so:

Array 3
(
   [1] = array (
                 [0] => 18
               )
   [2] = array (
                 [0] => 19
                 [1] => 20
               )
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小红帽 2024-11-15 20:39:06
$array3 = array();
foreach ( $array1 as $k => $v ) {
    if ( !isset($array3[$v]) )
        $array3[$v] = array();

    $array3[$v][] = $array2[$k];
}

var_dump($array3);
$array3 = array();
foreach ( $array1 as $k => $v ) {
    if ( !isset($array3[$v]) )
        $array3[$v] = array();

    $array3[$v][] = $array2[$k];
}

var_dump($array3);
|煩躁 2024-11-15 20:39:06

通过使用 foreach() 遍历一个数组来同步迭代两个数组,并使用共享索引访问相应的值。使用方括号语法推送数组元素时,无需将父数组声明为空数组。 演示

$array1 = [1, 2, 2];
$array2 = [18, 19, 20];

$result = [];
foreach ($array1 as $i => $id) {
    $result[$id][] = $array2[$i];
}
var_export($result);

输出:

array (
  1 => 
  array (
    0 => 18,
  ),
  2 => 
  array (
    0 => 19,
    1 => 20,
  ),
)

Synchronously iterate the two arrays by traversing one array with a foreach() and access the corresponding value using the shared index. When pushing array elements using square brace syntax it is unnecessary to declare the parent as an empty array. Demo

$array1 = [1, 2, 2];
$array2 = [18, 19, 20];

$result = [];
foreach ($array1 as $i => $id) {
    $result[$id][] = $array2[$i];
}
var_export($result);

Output:

array (
  1 => 
  array (
    0 => 18,
  ),
  2 => 
  array (
    0 => 19,
    1 => 20,
  ),
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文