PHP数组排序&在每次分组

时间:2015-12-27 14:10:44

标签: php arrays sorting

我需要有关阵列排序的绝对noob问题的帮助。我使用的是我在这里找到的功能: Group array results in Alphabetic order 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>';
}
?>

[编辑]我想要做的是将每个字母组的数组值导出到文件中,甚至没有回应,这将是:

foreach(){
 $group = ??; //group values alphabetically into a variable
 export($group); //input the variable into my exporting function.
}

所以最终结果是我会有单独的文件(即:a.txt,b.txt - z.txt)。我认为这可以通过上述功能完成,我只是不知道将导出功能放在哪里。

希望我不要太困惑。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案就是调用已经回显的函数。

例如:

def method(queue)
  [].tap { |array| array << queue.pop until queue.empty? }
end

更好的是,如果你把它写成一个可重用的函数,你可以接受一个回调作为参数。例如:

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.
}