直接将控制台应用程序输出保存在数组中


Saving console application output in an array directly

如何对控制台应用程序的输出进行进一步的比较或计算?我相信它是ASCII格式的。我在php中调用了控制台应用程序,它提供了大量的数字数据。我希望数据保存在数组中,而不是在txt文件中,因为读写文件的过程需要时间,我希望它直接保存在数组中。我使用了exec($command,$result),但我无法以适当的形式保存结果。输出如下所示:

    Columns 1 through 7
0.1373    0.0414    0.0541    0.1342    0.5606    0.5293    0.1652
 Columns 8 through 14
0.0341    0.0396    0.0633    0.0778    0.0289    0.0654    0.0752
Columns 15 through 21
0.3055    0.4602    0.0631    0.0360    0.0188    0.0497    0.0228...........

我不希望列行被保存在数组中,我希望列中的每个元素被保存在数组的不同索引中。如array[1]=0.1373 and array[2]=0.414.

我的建议是在输出的每一行上运行一个简单的正则表达式:

if (preg_match_all('/'d+'.'d+/', $line, $matches)) {
    print_r($matches[0]);
}

如果表达式匹配,您将得到一个结果数组,您可以使用该数组进行进一步处理。与您的帖子匹配的第一行的输出:

Array
(
    [0] => 0.1373
    [1] => 0.0414
    [2] => 0.0541
    [3] => 0.1342
    [4] => 0.5606
    [5] => 0.5293
    [6] => 0.1652
)

您可以使用[s,t]=system(…)捕获外部命令的输出。第二个输出应该是文件中所包含内容的字符串。然后,您可以解析字符串(例如使用regexp或str split utils)以提取所需的数据。