【发布时间】:2018-05-01 08:27:24
【问题描述】:
这是我的 2 个数组的输出:
代码1:
print_r($arr);
echo implode(" ", $arr) ."\n";
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
1 2
3
代码 2:
print_r($arr);
echo implode(" ", $arr) ."\n";
输出
Array
(
[0] => 1
[1] => 4
[2] => 2
[3] => 3
)
1 4 2
3
为什么我的数组中有间隙?这发生在我在项目中进行了一些代码交换以对数字进行排序之后(特殊情况,无法排序($arr))。
编辑:我在两个数组上都做了var_dump($arr);,这是输出:
代码1:
array(3) {
[0]=>
string(1) "1"
[1]=>
string(2) "2
"
[2]=>
string(1) "3"
}
代码 2:
array(4) {
[0]=>
string(1) "1"
[1]=>
string(2) "2
"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
}
完整代码:
标准输入文件中的内容
3
3
3 1 2
4
1 3 4 2
5
1 2 3 5 4
代码:
<?php
$_fp = fopen("php://stdin", "r");
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
fscanf ($_fp, "%d", $testcases);
for ($i = 0; $i < $testcases; $i++)
{
fscanf($_fp, "%d", $n);
$arr = explode(" ", fgets($_fp));
for ($j = 0; $j < ($n-1); $j++)
{
print_r($arr);
if ($arr[$j] > $arr[$j+1])
{
if ( isset($arr[$j-1]) )
{
$loop = 0;
while($loop < 3)
{
$a = $arr[$j-1];
$b = $arr[$j];
$c = $arr[$j+1];
$arr[$j-1] = $b;
$arr[$j] = $c;
$arr[$j+1] = $a;
if ($arr[$j-1] <= $arr[$j] && $arr[$j] <= $arr[$j+1])
{
$possible = 1;
break;
}
$loop++;
}
}
elseif ( isset($arr[$j+2]) )
{
$loop = 0;
while($loop < 3)
{
$a = $arr[$j];
$b = $arr[$j+1];
$c = $arr[$j+2];
$arr[$j] = $b;
$arr[$j+1] = $c;
$arr[$j+2] = $a;
if ($arr[$j] <= $arr[$j+1] && $arr[$j+1] <= $arr[$j+2])
{
$possible = 1;
break;
}
$loop++;
}
}
}
}
$possible = 0;
print_r($arr);
}
?>
【问题讨论】:
-
var_dump($arr[1]);我认为它包含换行符
-
@Toby,它出现在您问题中的代码之前。看看你如何初始化 [2] 个项目
-
我们无法告诉您为什么您的数组元素中有一个换行符,除非您首先发布生成该数组的代码。跨度>
-
在
$arr = explode(" ", fgets($_fp));之后添加array_map('trim', $arr);