首页 > 解决方案 > 在PHP中输出两个不同数组的对应元素

问题描述

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

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

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

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

任何帮助,将不胜感激。

标签: phparrayssorting

解决方案


创建一个合理的数据结构,将两种信息保存在一起,对其进行排序并输出:

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

推荐阅读