0

のような複数の変数が$soft0 , $soft1 , $soft2 , $soft3 , $soft4 , $soft5あり$fo0 , $fo1 , $fo2 , $fo3 , $fo4 , $fo5ますが、ここでif条件を適用したい場合は、エラーが表示されます。コード:

for ($i=0; $i<=29; $i++) {
    $soft$i = str_replace(" ", "+", $fo$i); // this line showing an error
    $link_f_u = $html->find('h3', 0);
    $keyy = $link_f_u->plaintext;
    if ($soft$i==$keyy){
        continue;
    } else { 
        publish($soft$i);
    }
}

このコードを変更するためのアイデアはありますか?

4

3 に答える 3

3

これでエラーは修正されますが、配列を確認することを強くお勧めします: http://php.net/manual/en/language.types.array.php

for($i=0;$i<=29;$i++){
    $softVarName = "soft" . $i;
    $foVarName = "fo" . $i;

    $$softVarName = str_replace(" ", "+", $$foVarName);
    $link_f_u = $html->find('h3', 0);
    $keyy = $link_f_u->plaintext;
    if ($$softVarName==$keyy){
        continue;
    } else { 
        publish($$softVarName);
    }
}
于 2013-01-03T19:40:07.217 に答える
2

これで問題が解決するはずです。

for($i=0;$i<=29;$i++){
    ${'soft' . $i} = str_replace(" ", "+", ${'fo' . $i}); // this line showing an error
    $link_f_u = $html->find('h3', 0);
    $keyy = $link_f_u->plaintext;
    if (${'soft' . $i} == $keyy){
        continue;
    } else { 
        publish(${'soft' . $i});
    }
}
于 2013-01-03T19:40:48.423 に答える
2

オプション1(最良のオプション):

のような配列に変更$soft0 ... $soft10します。その後、forループで使用できます。$soft[0] .. $soft[10]count()

for($i=0;$i<=count($soft);$i++){
    $soft[$i] = str_replace(" ", "+", $fo[$i]);
    $link_f_u = $html->find('h3', 0);
    $keyy = $link_f_u->plaintext;
    if ($soft[$i]==$keyy){
        continue;
    } else { 
        publish($soft[$i]);
    }
}

オプション2:

二重ドル記号を使用することもできますが、これは面倒であり、キャッチするのが難しいエラーが発生する可能性があります。

$soft_name = 'soft'.$i;
$fo_name = 'fo'.$i;
$$soft_name = str_replace(" ", "+", $$fo_name);
于 2013-01-03T19:41:00.000 に答える