0

以前に行ったように、while ループ内に while ループを配置できると確信していますが、ここで問題が発生しているようです。これはかなり複雑なので、コードを投稿してから説明してください。

PHP:

//post vars
$port=$_POST['ports'];
$super=$_POST['super'];
$col=$_POST['columns'];
$row=$_POST['rows'];
//rest of vars
$half_col=$col/$super;
$halfer_col=$col/$super;
$i=1;
$count=1;
$and=1;
$one=1;
$sector=array();
$dat_array=array();

echo $port."<br>";

echo $super."<br>";

echo $col."<br>";

echo $row."<br><br><br><br>";
echo "<h1>here goes nothen</h1><br><br>";

while($count<$port){
    while($i<=$half_col){
        $dat_array[]=$halfer_col;
        $i+=$and;
        $halfer_col-=$and;
        echo "<br>halfer_col:".$halfer_col."<br>";
    }
print_r($dat_array);
$sector[]=implode(',',$dat_array);
$count+=$half_col;
$halfer_col+=$half_col;
}

echo "<br><br>ANNNNNNND...<br><br>";
print_r($sector);

さて、これはユーザー入力 port:24 super:2 col:12 row:2 結果:

24
2
12
2

here goes nothen

halfer_col:5

halfer_col:4

halfer_col:3

halfer_col:2

halfer_col:1

halfer_col:0
Array ( [0] => 6 [1] => 5 [2] => 4 [3] => 3 [4] => 2 [5] => 1 ) Array ( [0] => 6 [1] => 5 [2] => 4 [3] => 3 [4] => 2 [5] => 1 ) Array ( [0] => 6 [1] => 5 [2] => 4 [3] => 3 [4] => 2 [5] => 1 ) Array ( [0] => 6 [1] => 5 [2] => 4 [3] => 3 [4] => 2 [5] => 1 ) 

ANNNNNNND...

Array ( [0] => 6,5,4,3,2,1 [1] => 6,5,4,3,2,1 [2] => 6,5,4,3,2,1 [3] => 6,5,4,3,2,1 )

基本的に、それはユーザー入力を受け取り、それを分解し、「、」に基づいてプローバーの順序で内破します。しかし、私が知る限り、ここでは追加されていません。$halfer_col+=$half_col;それが原因でデータが増加しません。アイデアはありますか? または、設定されている方法で内部 while ループを追加して影響を与えない理由についての説明さえあります。

最終的に、最終的な配列は次のようになります。

Array ( [0] => 6,5,4,3,2,1 [1] => 12,11,10,9,8,7 [2] => 18,17,16,15,14,13 [3] => 24,23,22,21,20,19 )
4

2 に答える 2

1

コードを次のように変更できます。

$port = (int)$_POST['ports'];
$super = (int)$_POST['super'];
$col = (int)$_POST['columns'];
$row = (int)$_POST['rows'];

$colHalf = $col / $super;

$finalArray = array();
for ($i = $port; $i >= 1; $i -= $colHalf) {
    $tempArray = array();
    for ($j = 0; $j < $colHalf; $j++) {
        $tempArray[] = $i - $j;
    }
    $finalArray[] = implode(",", $tempArray);
}
$finalArray = array_reverse($finalArray);

echo "<pre>" . print_r($finalArray, true) . "</pre>";

これにより、必要なものが出力されます (ポート = 24、スーパー = 2、列 = 12、行 = 2):

Array
(
    [0] => 6,5,4,3,2,1
    [1] => 12,11,10,9,8,7
    [2] => 18,17,16,15,14,13
    [3] => 24,23,22,21,20,19
)
于 2013-01-22T19:30:51.977 に答える
0

外側の while を for ループにしてみることができます。

for(; $count<$port; $count+=$half_col){
    while($i<=$half_col){
        $dat_array[]=$halfer_col;
        $i+=$and;
        $halfer_col-=$and;
        echo "<br>halfer_col:".$halfer_col."<br>";
    }
print_r($dat_array);
$sector[]=implode(',',$dat_array);
$halfer_col+=$half_col;
}
于 2013-01-22T18:59:08.033 に答える