PHP CLI。读取分隔的命令行并将其保存到数组中,直到;退出“;进入

PHP CLI。读取分隔的命令行并将其保存到数组中,直到;退出“;进入,php,command-line-interface,Php,Command Line Interface,假设您想要编写一个简单的PHP脚本,该脚本将侦听命令行输入,并允许用户添加未知数量的参数并将这些参数保存到数组中(比如array\u small)。此数组(小的数组)将保存在另一个数组中(称之为大的数组)。现在完成输入信息的方法是键入“退出”。 示例:用户将在命令行中输入以下内容: Jack 20 30 40 30 John 30 40 20 Alex 50 30 1 1 exit 根据这个例子,array\u big如下所示 [ ['Jack', 20, 30, 40, 30], ['J

假设您想要编写一个简单的PHP脚本,该脚本将侦听命令行输入,并允许用户添加未知数量的参数并将这些参数保存到数组中(比如
array\u small
)。此数组(小的
数组
)将保存在另一个数组中(称之为
大的数组
)。现在完成输入信息的方法是键入“退出”。

示例:用户将在命令行中输入以下内容:

Jack 20 30 40 30
John 30 40 20
Alex 50 30 1 1
exit
根据这个例子,
array\u big
如下所示

[
 ['Jack', 20, 30, 40, 30], ['John', 30, 40, 20],...
]

实现这一点的最佳方法是什么?

应该有很多例子,但最简单的是:

$fh = fopen('php://stdin', 'r');
$array = array();

while($line = fgets($fh)) {
    if(trim($line) === 'exit') {
        break;
    }
    $array[] = explode(' ', $line);
}
print_r($array);
$lines=[];//PHP<5.4的或数组()
而($line=trim(fgets(STDIN)){//trim()来读取换行符
如果($line='exit'){break;}
$line[]=爆炸(“”,$line);
}

将侦听命令行输入的Web应用程序?我无法想象这样的事情…@mariobgr什么web应用程序?标题、问题和标签都很清楚。你试过阅读吗?(几乎)这里都有解释。这闻起来像是家庭作业或求职面试问题。@axiac-这个问题是关于第一次修订的web应用程序的-显然是在那之后更新的。别忘了初始化阵列。这是一个很好的做法。在这个特定的示例中,如果您的第一个输入是“退出”,那么在执行
print\r($array)
时,此代码将触发一个通知。使用未初始化变量的频率比您想象的要高,并且可能导致意外的结果。@s3v3n很好的捕获-这就是为什么我喜欢协作编码。如果我没有错的话,还有“小数组”将包含换行符。因此,
$line
每次都应该是
trim
med。
$lines = []; // or array() for PHP < 5.4

while ($line = trim(fgets(STDIN))) { // trim() to get read of newline
    if($line == 'exit') { break; }
    $lines[] = explode(' ', $line);
}