在 PHP 中将数组键和值转换为字符串



我得到了一个数组

["id":16,"name":"Allayne","city":"Karkkila","gender":"Male","valid_to":"2019-09-25","note":"server"],
["id":17,"name":"Wilfred","city":"Tungor","gender":"Male","valid_to":"2020-01-12","note":"client"],
["id":18,"name":"Cyrille","city":"Xi’an","gender":"Male","valid_to":"2020-02-28","note":"client"],
["id":19,"name":"Janeen","city":"Sorochuco","gender":"Female","valid_to":"2020-05-22","note":"server"],
["id":20,"name":"Nelli","city":"Falun","gender":"Female","valid_to":"2020-04-02","note":"client"],
["id":21,"name":"Teressa","city":"Bobon","gender":"Female","valid_to":"2020-04-22","note":"client"],
["id":22,"name":"Birk","city":"Amu Gulang Baolige","gender":"Male","valid_to":"2019-12-10","note":"server"],
["id":23,"name":"Percival","city":"Podgortsy","gender":"Male","valid_to":"2019-12-20","note":"client"],
["id":24,"name":"Lemuel","city":"Kamionka Strumitowa","gender":"Male","valid_to":"2020-02-24","note":"client"]

我想用 php 按性别分组

,如下所示,
#1
gender:male
name:
aaa
bbb
-----------
#2
gender:female
name:
ccc
ddd

可以教我怎么做或教我怎么做! 谢谢!

这是这个问题的玩法场 https://www.tehplayground.com/bHsPFyAVFZ3tjHAn

我在第一步使用了group_by 但是我无法弄清楚将字符串作为我想要的格式 谢谢!


这是我的原始代码,$data是源数组

function group_by($key, $data)
{
$result = [];
foreach ($data as $val) {
if (array_key_exists($key, $val)) {
$result[$val[$key]][] = $val;
} else {
$result[""][] = $val;
}
}
return $result;
}
$byGroup = group_by("gender", $data);
// echo "<pre>" . var_export($byGroup, true) . "</pre>"."n";

function myPlus($users)
{
return array_map(function($user) {
return $user['name'];
}, $users);
}

$a = array_map("myPlus", $byGroup);
print_r($a);

如果我们想保留您的代码以进行分组:

function group_by($key, $data)
{
$result = [];
foreach ($data as $val) {
if (array_key_exists($key, $val)) {
$result[$val[$key]][] = $val;
} else {
$result[""][] = $val;
}
}
return $result;
}
$byGroup = group_by("gender", $data);
echo "#1
gender:male
name:
";
foreach ($byGroup['Male'] as $person) {
echo $person['name'],"n";
}
echo "-----------
#2
gender:female
name:
";
foreach ($byGroup['Female'] as $person) {
echo $person['name'],"n";
}

否则,我只会做:

foreach ($data as $person) {
if ($person['gender']==='Male'){
$m .= $person['name'] . "n";
} else {
$f .= $person['name'] . "n";
}
}
echo "#1
gender:male
name:
$m
-----------
#2
gender:female
name:
$f";

最新更新