用PHP实现以下代码,有一个以姓名为Key,性别为Value的数组,请根据上下文补充代码将数组中男生按姓名的升序排列并将结果存放在索引数组$man中,女生按姓名的降序排列并将结果存放在索引数组$woman中。
时间: 2024-09-27 19:05:49 浏览: 32
在 PHP 中,你可以使用 `usort` 函数结合匿名函数来实现这个功能。假设我们有一个名为 `$people` 的关联数组,存储了姓名和性别:
```php
$people = array(
'张三' => '男',
'李四' => '女',
'王五' => '男',
'赵六' => '女',
// 更多的人...
);
// 定义排序规则
function sort_by_gender($a, $b) {
if ($a['性别'] == $b['性别']) {
return strcmp($a['姓名'], $b['姓名']); // 如果性别相同,按照姓名升序/降序比较
} else {
return strcmp($a['性别'], '女'); // 女生排在前面,男生排在后面
}
}
// 创建男性和女性数组,并分别排序
$man = [];
$woman = [];
usort($people, function($person) {
return sort_by_gender($person, end($woman)); // 对男性数组按性别升序,对女性数组降序
});
// 将男生添加到$man数组,女生添加到$woman数组
foreach ($people as $name => $gender) {
if ($gender === '男') {
$man[] = $name;
} else {
$woman[] = $name;
}
}
$man = array_values($man); // 确保数组键从0开始
$woman = array_reverse($woman, true); // 保持降序
print_r($man);
print_r($woman);
阅读全文