我正在使用PHP for(i=3;i<=n;i++)
let n=4;
variable a,b=0,c=1;
[a=b+c;b=c;c=a;].........(1) //now a=1;b=1;c=1;
[a=b+c,b=c,c=a)...............(2) //now a=2;b=1;c=2;
命令以数组形式读取文件。数组的每一行都包含数字,例如“ 0 0 0 1 22 5 1 71”等。应该有1024组这些非空白字符,我正在尝试将它们提取到数组中
file
但是,当我运行此命令时,我得到的计数是1026,而不是1024。什么是错?当我使用
// $lines contains each line from file(...)
foreach ($lines as $i => $value)
{
$matches = preg_split('/\s*(\d*)\s*/', $lines[$i]);
echo count($matches);
}
我得到1027。
答案 0 :(得分:0)
您根本不需要正则表达式。使用explode
可能会更快。并要修改数组,只需引用foreach
(但要进行与该做法有关的read the warnings,然后再使用unset
。)
$lines = file("input.txt");
foreach ($lines as &$value) {
$value = explode(" ", trim($value));
}
unset $value;
答案 1 :(得分:0)
您的正则表达式需要匹配您要分割的定界符字符串。您的代码可能会出错,因为它试图在定界符中包含数字。更不用说/\s*\d*\s*/
几乎可以匹配空格字符和数字的任何组合。
$input = ' 0 0 0 1 22 5 1 71 ';
var_dump(preg_split('/\s+/', $input, -1, PREG_SPLIT_NO_EMPTY));
输出:
array(8) {
[0]=>
string(1) "0"
[1]=>
string(1) "0"
[2]=>
string(1) "0"
[3]=>
string(1) "1"
[4]=>
string(2) "22"
[5]=>
string(1) "5"
[6]=>
string(1) "1"
[7]=>
string(2) "71"
}