我有一个像这样的数组:
$files = array(
"Input.txt" => "Randy",
"Code.py" => "Stan",
"Output.txt" => "Randy"
);
我想按文件所有者对文件进行分组并像这样返回:
[
"Randy" => ["Input.txt", "Output.txt"],
"Stan" => ["Code.py"]
]
我尝试这样做:
<?php
class FileOwners
{
public static function groupByOwners($files)
{
foreach ($files as $file => $owner){
$data[$owner] = $file;
};
return $data;
}
}
$files = array(
"Input.txt" => "Randy",
"Code.py" => "Stan",
"Output.txt" => "Randy"
);
var_dump(FileOwners::groupByOwners($files));
但是我得到的是这样的:
array(2) {
["Randy"]=>string(10) "Output.txt",
["Stan"]=>string(7) "Code.py"
}
请帮忙如何制作。
您要覆盖 $data,请使用
$data[$owner][] = $file;
而不是 $data[$owner]= $file;
public static function groupByOwners($files)
{
foreach ($files as $file => $owner){
$data[$owner][] = $file;
};
return $data;
}
只需创建一个多维数组
[]
,
foreach ($files as $file => $owner){
$data[$owner][] = $file; // [] will store values as an array inside the key
} // Remove semicolon from here