关于数组排序的绝对noob问题,我需要帮助。我使用的是我在这里找到的一个函数:以字母顺序PHP对数组结果进行分组按字母顺序对数组值进行排序。
$records = ['Aaaaa', 'Aaaa2', 'bbb', 'bbb2', 'Dddd'];
$lastChar = '';
sort($records, SORT_STRING | SORT_FLAG_CASE);
foreach($records as $val) {
$char = $val[0]; //first char
if ($char !== $lastChar) {
if ($lastChar !== '')
echo '<br>';
echo strtoupper($char).'<br>'; //print A / B / C etc
$lastChar = $char;
}
echo $val.'<br>';
}
?>
[EDIT]我想做的是将数组值的每个字母组导出到文件中,甚至不回显,这将是:
foreach(){
$group = ??; //group values alphabetically into a variable
export($group); //input the variable into my exporting function.
}
所以最终的结果是我会有单独的文件(即:a.txt,b.txt--z.txt)。我认为这可以用上面的函数来完成,我只是不知道把导出函数放在哪里。
希望我不会太困惑。
最简单的解决方案是只调用已经回显的函数。
例如:
echo '<br>'; // you can remove this line - its a marker for where to put it.
functionToCall();
更好的是,如果您将其编写为可重用的函数,则可以接受回调作为参数。例如:
function mySortFunction($records, callable $callback) {
// ... do some sorting
$callback(); // calls the function a.k.a. callback.
// ... do some more sorting
}
并称之为:
mySortFunction(['somedata'], 'myFunctionName');
// OR
mySortFunction(['somedata'], function() {
// write your callback function here if its short.
});
或者,如果您想将此函数转换为生成器,则可以使用yield
结果。从广义上讲,收益率将取代回声
例如:
function mySortFunction($records) {
// do some sorting
yield $someValue;
// continue to do more sorting.
}
然后你可以像这样使用它:
$last = '';
$generator = mySortFunction($records);
foreach($generator as $result) {
if(substr($result, 0, 1) != $last && $last != '') {
echo "<br>"; // put an extra line between each letter
}
echo $result
}