0

理解できるように質問を定式化できるかどうかはわかりませんが、試してみます。

私はこのphpコードを持っていて、whileループから最後の変数を「取り除く」ことに興味があります!!

$c= "2040-01-01 12:00:00";
$d= "2040-01-02 12:00:00";
$date_3 = date("Y-m-d g:i:s", strtotime("$c"));
$date_4 = date("Y-m-d g:i:s", strtotime("$d"));

$results = array($date_1);
$i = $date_3;

while ($i <= $date_4) {
    $i = date("Y-m-d g:i:s", strtotime($i));
    array_push($results, $i);
    $k= $i . "\n";
    $chunks = str_split($k, 19);
    $nexstring = join('\')', $chunks);
    $cane = implode(', (\'', str_split($nexstring, 21));
    echo $cane; // OUTPUTS -> 2040-01-01 12:00:00'), (' 2040-01-02 12:00:00'), (' 
    $i = date("Y-m-d g:i:s",strtotime("+1 day", strtotime($i)));
}
echo $cane; // OUTPUTS -> 2040-01-02 12:00:00'), (' 

今私の質問は

$cane が while{} の外側で何か違うことをエコーするのはなぜですか? また、この変数を while{} の外側で同じになるように格納するにはどうすればよいですか?

4

2 に答える 2

2

echo $cane一度にその値の 1 つだけを出力します。しかし、それはループ内にあるため、複数回実行されます。これが、これらすべての値を取得した唯一の理由です。もちろん$cane、ループの外側でもう一度エコーすると、最後に入力した値のみが含まれます。以前の値は出力されていますが、上書きされています。

これらすべての値をループ内の 1 つの変数に追加する必要がある場合は、それらを外部で使用できるようにする必要があります。

$allCane="";
while ($i <= $date_4) {
    $i = date("Y-m-d g:i:s", strtotime($i));
    array_push($results, $i);
    $k= $i . "\n";
    $chunks = str_split($k, 19);
    $nexstring = join('\')', $chunks);
    $cane = implode(', (\'', str_split($nexstring, 21));
    echo $cane;
    $allCane .= $cane; // appends $cane to $allCane
    $i = date("Y-m-d g:i:s",strtotime("+1 day", strtotime($i)));
}
echo $allCane;

または、Dagon が指摘したように、これらすべての値を 1 つの配列に格納することもできます。

$allCane = array();
for ( /* ... */ ) {
    // ...
    $allCane[] = $cane;
    // ...
}
/*
   $allCane is now

   array (
      [0] = "2040-01-01 12:00:00'), (' ",
      [1] = "2040-01-02 12:00:00'), (' ",
      ...
   )
*/
于 2013-11-13T21:03:21.163 に答える