当前位置:  开发笔记 > 编程语言 > 正文

保持数组在PHP中排序

如何解决《保持数组在PHP中排序》经验,为你挑选了1个好方法。

我有一个PHP脚本,它读取大型CSV并执行某些操作,但前提是"用户名"字段是唯一的.CSV用于多个脚本,因此将输入从CSV更改为仅包含唯一用户名不是一种选择.

最基本的程序流程(我想知道)是这样的:

$allUsernames = array();
while($row = fgetcsv($fp)) {
    $username = $row[0];
    if (in_array($username, $allUsernames)) continue;
    $allUsernames[] = $username;
    // process this row
}

由于这个CSV实际上可能非常大,所以这in_array一点让我思考.在数组中搜索成员时最理想的情况是它是否已经排序,那么如何从头开始构建数组,保持它的顺序?一旦它按顺序排列,是否有更有效的搜索方式而不是使用in_array(),考虑到它可能不知道数组是否已排序?



1> Henrik Paul..:

不保持数组的顺序,但这种优化怎么样?我猜测isset()数组键应该比in_array()搜索更快.

$allUsernames = array();
while($row = fgetcsv($fp)) {
  $username = $row[0];

  if (isset($allUsernames[$username])) {
    continue;
  } else {
    $allUsernames[$username] = true;

    // do stuff
  }
}

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有