dongliang7545 2016-09-20 22:51
浏览 96
已采纳

在PHP中使用while()合并数组

I found the need to use element keys as identifiers and therefore stumbled upon the following predicament.

I am reading a file and parsing it in order to extract the filenames and then work with them. As I am looping through all the lines in the file, I am creating a new array for every match to the regular expression:

$file = fopen('/home/user/log.txt', 'r');

if ($file) {
  while (($line = fgets($file)) !== false) {
     if (preg_match('~^/[^:]+~m', $line, $files)) { //match everything until the first ':' to get file names
         var_dump($files);
     }
  }
}

Thus, I get:

array (size=1)
  0 => string '/home/user/whatever.php' (length=23)
array (size=1)
  0 => string '/home/user/run.php' (length=18)
array (size=1)
  0 => string '/home/user/sth.php' (length=18)

I would like to merge them all into one single array so that they may have different keys. Can that be achieved in this scenario or should I consired rewriting the loops?

  • 写回答

1条回答 默认 最新

  • duanmei1694 2016-09-20 22:58
    关注

    Do something like this instead to add them to an array as you loop:

    $file = fopen('/home/user/log.txt', 'r');
    $array = [];
    
    if ($file) {
      while (($line = fgets($file)) !== false) 
      {
         if (preg_match('~^/[^:]+~m', $line, $files)) 
         { //match everything until the first ':' to get file names
             array_push($array, $files);
         }
      }
    }
    
    var_dump($array);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?