Php 根据另一个数组的值对数组元素进行分组

Php 根据另一个数组的值对数组元素进行分组,php,arrays,grouping,Php,Arrays,Grouping,我知道这是一个简单的问题,但我没有找到答案,但 在PHP中,根据另一个数组的值对数组元素进行分组的最有效方法是什么 例如: names = [antonio, luigi, marco, stefano, gennaro, pino, lorenzo]; surnames = [bianchi, rossi, rossi, brambilla, rossi, rossi, brambilla]; 预期结果: bianchi: antonio rossi: luigi, marco, gen

我知道这是一个简单的问题,但我没有找到答案,但

在PHP中,根据另一个数组的值对数组元素进行分组的最有效方法是什么

例如:

names = [antonio, luigi, marco, stefano, gennaro, pino, lorenzo];
surnames = [bianchi, rossi, rossi, brambilla, rossi, rossi, brambilla];
预期结果:

bianchi:
antonio

rossi: 
luigi, marco, gennaro, pino

brambilla:
stefano, lorenzo

听起来您实际上想要创建一个映射,其中映射的每个输出元素都是一个列表。试着这样做:

<?php
function groupArrays($arrayToGroup, $arrayToGroupBy)
{
    if (count($arrayToGroup) != count($arrayToGroupBy))
        return null;

    $output = array();
    for ($i = 0; $i < count($arrayToGroupBy); $i++)
    {
        $key = $arrayToGroupBy[$i];
        $val = $arrayToGroup[$i];

        if (!isset($output[$key]))
            $output[$key] = array();

        array_push($output[$key], $val);
    }

    return $output;
}
?>

听起来您实际上想要创建一个映射,其中映射的每个输出元素都是一个列表。试着这样做:

<?php
function groupArrays($arrayToGroup, $arrayToGroupBy)
{
    if (count($arrayToGroup) != count($arrayToGroupBy))
        return null;

    $output = array();
    for ($i = 0; $i < count($arrayToGroupBy); $i++)
    {
        $key = $arrayToGroupBy[$i];
        $val = $arrayToGroup[$i];

        if (!isset($output[$key]))
            $output[$key] = array();

        array_push($output[$key], $val);
    }

    return $output;
}
?>

我只是快速创建脚本,这是最快、最可靠的方法:

<?php
$names = ['antonio', 'luigi', 'marco', 'stefano', 'gennaro', 'pino', 'lorenzo'];
$surnames = ['bianchi', 'rossi', 'rossi', 'brambilla', 'brambilla', 'brambilla', 'brambilla'];

$final = [];
foreach ($surnames as $index => $_sur) {
    // We don't check isset $names[$index] here
    $final[$_sur][] = $names[$index];
}

var_export($final);

我只是快速创建脚本,这是最快、最可靠的方法:

<?php
$names = ['antonio', 'luigi', 'marco', 'stefano', 'gennaro', 'pino', 'lorenzo'];
$surnames = ['bianchi', 'rossi', 'rossi', 'brambilla', 'brambilla', 'brambilla', 'brambilla'];

$final = [];
foreach ($surnames as $index => $_sur) {
    // We don't check isset $names[$index] here
    $final[$_sur][] = $names[$index];
}

var_export($final);
试试这个

foreach ($surnames as $key => $value) { 
  if (isset($result[$value])) { 
    if (!is_array($result[$value])) $result[$value] = (array) $result[$value]; 
    array_push($result[$value], $names[$key]);
  } 
  else 
  $result[$value]= $names[$key]; 
}
print_r($result);
输出

Array (
    [bianchi] => antonio
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
Array (
    [bianchi] => Array ( [0] => antonio )
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
否则

foreach ($surnames as $key => $value) { $result[$value][] = $names[$key]; }
输出

Array (
    [bianchi] => antonio
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
Array (
    [bianchi] => Array ( [0] => antonio )
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
试试这个

foreach ($surnames as $key => $value) { 
  if (isset($result[$value])) { 
    if (!is_array($result[$value])) $result[$value] = (array) $result[$value]; 
    array_push($result[$value], $names[$key]);
  } 
  else 
  $result[$value]= $names[$key]; 
}
print_r($result);
输出

Array (
    [bianchi] => antonio
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
Array (
    [bianchi] => Array ( [0] => antonio )
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
否则

foreach ($surnames as $key => $value) { $result[$value][] = $names[$key]; }
输出

Array (
    [bianchi] => antonio
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)
Array (
    [bianchi] => Array ( [0] => antonio )
    [rossi] => Array ( [0] => luigi, [1] => marco, [2] => gennaro, [3] => pino )
    [brambilla] => Array ( [0] => stefano, [1] => lorenzo )    
)

你想打印或创建其他阵列吗?完美答案,谢谢!很难选择“已接受的”一个…您想打印或创建其他阵列吗?完美答案,谢谢!很难选择“被接受的”一个。。。