在PHP中输出两个不同数组的对应元素

时间:2018-08-10 12:08:50

标签: php arrays sorting

我有两个不同的数组。首先包含人员名称,其次包含一些有关人员的信息。我想根据名称对第一个进行排序,然后输出名称。同时,我还想从其他数组中输出对应名称的描述。

我本可以使用关联数组,但是两个人可以使用相同的名字。

任何人都可以解释一下,如何从相应位置的第二个数组中获取元素作为输出?

asort($names);
$n_index = 0;
foreach($names as $name) {
    echo $name.' '.$descrption[$n_index].'\n';
    $n_index++;
}

我不能使用array_search,因为键或名称不是唯一的。 :)

以下是一些示例数据:

$names = ['Andy', 'Mandy', 'Andy', 'Alex', 'Megan', 'Mandy', 'Megan'];
$description = ['Tall', 'Short', 'Slim', 'Short', 'Tall', 'Fat', 'Tall'];

输出:

Alex Short
Andy Tall
Andy Slim
Mandy Short
Mandy Fat
Megan Tall

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

建立一个明智的数据结构,将两种信息保持在一起,进行排序并输出:

$people = array_map(null, $names, $description);
// $people = [['Andy', 'Tall'], ['Mandy', 'Short'], ...]
usort($people, function ($a, $b) { return strcmp($a[0], $b[0]); });

foreach ($people as $person) {
    echo $person[0], ' ', $person[1], PHP_EOL;
}