在 PHP 中的 while() 中合并数组

Posted

技术标签:

【中文标题】在 PHP 中的 while() 中合并数组【英文标题】:Merging arrays in while() in PHP 【发布时间】:2016-09-20 22:51:49 【问题描述】:

我发现需要使用元素键作为标识符,因此偶然发现了以下困境。

我正在读取一个文件并对其进行解析,以便提取文件名,然后使用它们。当我遍历文件中的所有行时,我正在为正则表达式的每个匹配项创建一个新数组:

$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);
     
  

因此,我得到:

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)

我想将它们全部合并到一个数组中,这样它们就可以有不同的键。在这种情况下可以实现还是我应该考虑重写循环?

【问题讨论】:

只需将其分配给一个新容器,然后只需选择结果的索引零 为什么不只添加一个计数器说 $j 然后只做 if (preg_match('~^/[^:]+~m', $line, $files[$j])) 【参考方案1】:

做这样的事情,而不是在循环时将它们添加到数组中:

$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);

【讨论】:

是的,我没想到。按预期工作。感谢您的时间和回答。会尽快接受的。

以上是关于在 PHP 中的 while() 中合并数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP 合并有序数组

JAVA中的数组合并问题

php当中,如何将数组合并成变量呢?

论php数组合并

JAVA数组合并请高手指教

【php】合并多个数组并去掉相同的