0

foreach と for を使用してカンマ区切りのリストを作成しています。以下はコードです...

$timeofdaylist = "";
foreach($_POST['timeofday'] as $key => $value)
{
    if($timeofdaylist == "")
    {
        $timeofdaylist = "'".$value."'";
    }
    else
    {
        $timeofdaylist .= ",'".$value."'";
    }               
}
echo $timeofdaylist;

上記のコードは、「AM」、「PM」のようなカンマ区切りのリストを提供します。

ここで、最初の条件$timeofdaylist == ""は期待どおりに正しく機能しています。

そして今、別のコード

$timeofdaylist = "";
var_dump($timeofdaylist);
for($i=0;$i<count($_POST['timeofday']);$i++) {          
    if($timeofdaylist == "") {
        $timeofdaylist = "'".$_POST['timeofday'][$i]."'";
    } else {
        $timeofdaylist = ",'".$_POST['timeofday'][$i]."'";
    }       
}
echo $timeofdaylist;

上記のコードは、次のように最後の値のみを出力します: ,'PM'

timeofdaylist を var_dumped して、最初の条件の前にチェックし$timeofdaylist == ""ました。length=0 を示します。

上記の 2 つのコードの違いを区別できる人はいますか? ティア

4

1 に答える 1

2

$timeofdaylist各反復で変数をリセットするため
、配列の最後の値のみが含まれます

あなたの最初の例、

$timeofdaylist .= ",'".$value."'";= 文字列を連結する

だから、私は推測します

$timeofdaylist .= ",'".$_POST['timeofday'][$i]."'";

タイプミスが問題の原因であると仮定すると...

于 2012-06-01T08:22:41.183 に答える