php - 在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
任何帮助,将不胜感激。
解决方案
创建一个合理的数据结构,将两种信息保存在一起,对其进行排序并输出:
$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;
}
推荐阅读
- nginx - AKS 标准负载均衡器 TCP 重置注释
- android - app:cornerRadius 不适用于 MaterialButton
- javascript - 循环播放音频有限次数
- python - 如何就地更新数据类?
- java - 有没有办法从 JSON url 加载图片?
- c++ - opencv c ++将ipl更改为mat累积
- azure-ad-b2c - 在 Azure AD B2C 下使用 Apple 登录
- azure-devops - 在 Azure Devops 中,如何创建显示迭代开始日期和结束日期的查询?
- php - Visual Studio Code PHP Intelephense 不断显示不必要的错误
- java - 添加和显示列表对象