在 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() 中合并数组的主要内容,如果未能解决你的问题,请参考以下文章