3

多くの助けを借りて、VPS 上のファイルを編集するスクリプトを作成しました。うまく機能していますが、完全に困惑している問題が 1 つあります。ファイルの値を 0 に調整する必要がある場合、機能しません。value="3"0 ( ) 以外のほとんどすべての値 (つまり ) が機能しvalue="0"ます。私はとても混乱しています。スクリプトで color= の値をcolor=0に変更する必要があります。なぜ 0 が機能しないのかわかりませんが、他の数字や文字は機能します。これが私のコードです:

<?php
//Color
    $color = explode("=", trim($contents[1]));

    if(isset($_REQUEST['difficulty_choice'])){
        exec('sed -i '.escapeshellarg('s/color=.*/color='.$_REQUEST['color_choice'].'/g')." /home/user/color.props");
        echo 'Color choice has been updated';
    }

?>


<?php echo $contents[1]; //Color ?>
<form method="get" action="update.php">
    <select name="color_choice">;
        <option value="0" <?php if($color[1] == '0'){?>selected="selected"<?php }?>>Red</option>;
        <option value="1" <?php if($color[1] == '1'){?>selected="selected"<?php }?>>Blue</option>;
        <option value="2" <?php if($color[1] == '2'){?>selected="selected"<?php }?>>Black</option>;
        <option value="3" <?php if($color[1] == '3'){?>selected="selected"<?php }?>>Yellow</option>;
    </select>
    <input type="submit" name="Submit" value="Submit" />
</form>

ファイルの内容:

# The color file
color=1

更新: !empty を isset に切り替えたところ、動作しました!

4

2 に答える 2

4

php では、 が$val = "0"empty($val)評価されtrueます。予想外ですが、それがphpのやり方です。PHP ドキュメントempty()「戻り値」セクションの下に、空と見なされる値のリストが表示されます。これを証明するための小さなテスト スクリプトを次に示します。

<?php
$val = "0";
if (empty($val)) {
        echo $val . " is empty!\n";
} else {
        echo $val . " is not empty.\n";
}

$val = "1";
if (empty($val)) {
        echo $val . " is empty!\n";
} else {
        echo $val . " is not empty.\n";
}
?>

出力は次のとおりです。

0 is empty!
1 is not empty.

===の代わりに演算子など、別の種類のチェックを使用することを検討してくださいempty()

于 2013-08-03T20:50:03.643 に答える
0

整数をチェックしたい場合は、整数を比較するときに引用符を使用しないでください。代わりにこのようなことをしてください。

<?php
$cmpColor = intval($color[1]); //Make sure to compare with an integer. This way you can use === to compare (because $cmpColor and 0,1,2 or 3 are of the same type as well)
?>

<select name="color_choice">;
    <option value="0" <?php if($cmpColor === 0){?>selected="selected"<?php }?>>Red</option>;
    <option value="1" <?php if($cmpColor === 1){?>selected="selected"<?php }?>>Blue</option>;
    <option value="2" <?php if($cmpColor === 2){?>selected="selected"<?php }?>>Black</option>;
    <option value="3" <?php if($cmpColor === 3){?>selected="selected"<?php }?>>Yellow</option>;
</select>
于 2013-08-03T21:11:02.683 に答える