有一个以姓名为key,性别为value的数组,将数组中的男生按升序排列并将结果存放到索引数组$man中,女生按姓名的降序排列并将结果存放在索引数组$woman中。key:[李寻欢,张三丰,陆小凤,乔峰,武松],value :[男,男,男,男,男]。用php写
时间: 2024-09-27 14:05:56 浏览: 32
在 PHP 中,你可以使用 `usort()` 函数结合数组的回调函数来实现这样的排序。首先,你需要创建两个索引数组 `$man` 和 `$woman` 来存储结果,并对原始数组按照性别进行分类。以下是具体的代码示例:
```php
<?php
// 定义原始姓名和性别关联数组
$data = [
'李寻欢' => '男',
'张三丰' => '男',
'陆小凤' => '男',
'乔峰' => '男',
'武松' => '男',
];
// 初始化男性和女性数组
$man = [];
$woman = [];
// 分类并排序
foreach ($data as $name => $gender) {
if ($gender === '男') {
// 男生按姓名升序
usort($man, function($a, $b) use ($data) {
return strcmp($data[$a], $data[$b]);
});
// 如果 $man 还未满,则添加
array_push($man, $name);
} else {
// 女生按姓名降序
usort($woman, function($a, $b) use ($data) {
return strnatcasecmp($data[$b], $data[$a]); // 使用 strnatcasecmp 避免大小写敏感
});
// 将名字加入女子列表,由于已降序,所以从后往前添加
array_unshift($woman, $name);
}
}
print_r($man); // 输出男生排序后的数组
print_r($woman); // 输出女生排序后的数组
阅读全文