如何使用php命令行在单行中执行多个标准输入
like Input is:
3
1 2
2 3
4 5
我必须以给定样式采用这些输入。这里(1和2),(2和3)和(4和5)必须采取在一个线作为输入。如何使用php命令行在单行中执行多个标准输入
这是我的代码片段。
<?php
header('Content-Type: text/plain');
$testCase = (int) fgets(STDIN);
while($testCase--) {
$myPosition = (int) fgets(STDIN);
$liftPosition = (int) fgets(STDIN);
}
在C实现++
int main()
{
int testcase, myPos, liftPos;
cin >> testcase;
while(testcase--)
{
cin >> myPos >> liftPos;
}
}
那么,怎样才能在PHP中实现C++代码?
实际上,问题是出在下面一行:
$myPosition = (int) fgets(STDIN);
这里,显式转换为int的废弃空间后的值,所以当你给1 2
在命令行中输入(int)
是把它变成1
,你正在失去其它字符。
$arr = [];
$testCase = (int) fgets(STDIN);
while ($testCase--) {
list($a, $b) = explode(' ', fgets(STDIN));
$arr[] = $a.' '.$b;
}
print_r($arr);
上述解决方案的工作,因为我已经删除了(int)
从fgets
的开始。还要注意的是,我使用list($a, $b)
在这里,这实际上会在当前范围内创建两个变量$a and $b
所以我总是假设,您将使用两个不同的数字(即:1 2),否则,你可以使用$inputParts = preg_split("/[\s]+/",$input)
或别的东西与explode
形成从输入从控制台的阵列。
在PHP等效是:
<?php
header('Content-Type: text/plain');
$testCase = (int) fgets(STDIN);
while($testCase--) {
$input = fgets(STDIN);
$inputParts = preg_split("/[\s]+/",$input);
$myPosition = (int)$inputParts[0];
$liftPosition = (int)$inputParts[1];
}
这是因为在你的例子是C型换档操作发生在这两个数字作为单独的数字。它使用空格字符自动分隔。因此,您需要手动将输入字符串拆分为PHP。
感谢您的帮助,它的工作 –
@TheExtendable不客气!请记住接受正确的答案,并注意有用的评论和答案。 – Canis
这是不是一个C++的问题... – YSC