目前,我正在对文件内容进行排序和分组 例如我有这个txt文件
输入
- Test_test01.abc
- Test_test02.abc
- Test_testaroony.abc
- Test_testBits32.abc
- Test_testBits3202.abc
- Test_testBits16.abc
- Test_testBits1602.abc
预期产量
Group:
- Test_test01.abc
- Test_test02.abc
Group:
- Test_testaroony.abc
Group:
- Test_testBits16.abc
- Test_testBits1602.abc
- Test_testBits32.abc
- Test_testBits3202.abc
这是我的起始代码(显然需要改进:))
<?php
$names = array(
"Test_test01.abc",
"Test_test02.abc",
"Test_testaroony.abc",
"Test_testBits3202.abc",
"Test_testBits16.abc",
"Test_testBits1602.abc"
);
sort($names);
$nlength = count($names);
for($x = 0; $x < $nlength; $x++) {
echo $names[$x];
echo "<br>";
}
?>
并输出
- List item
- Test_test01.abc
- Test_test02.abc
- Test_testBits16.abc
- Test_testBits1602.abc
- Test_testBits32.abc
- Test_testBits3202.abc
- Test_testaroony.abc
请给我一点帮助:)
答案 0 :(得分:0)
正如我已经评论过的,您必须决定一个规则来对项目进行分组。另外,建议使用natsort
代替sort
:
$names = array("Test_test01.abc", "Test_test02.abc", "Test_testaroony.abc",
"Test_testBits32.abc", "Test_testBits3202.abc", "Test_testBits16.abc", "Test_testBits1602.abc");
natsort($names);
$result = array_reduce($names, function ($carry, $item) {
if (!isset($carry[$item[9]])) {
$carry[$item[9]] = [$item];
} else {
$carry[$item[9]][] = $item;
}
return $carry;
}, []);
$result = array_values($result);
echo '<pre>';
var_dump($result);
echo '</pre>';
结果将是:
array(3) {
[0]=>
array(2) {
[0]=>
string(15) "Test_test01.abc"
[1]=>
string(15) "Test_test02.abc"
}
[1]=>
array(4) {
[0]=>
string(19) "Test_testBits16.abc"
[1]=>
string(19) "Test_testBits32.abc"
[2]=>
string(21) "Test_testBits1602.abc"
[3]=>
string(21) "Test_testBits3202.abc"
}
[2]=>
array(1) {
[0]=>
string(19) "Test_testaroony.abc"
}
}