0

$parsed[ X ][4] と $parsed[ X ][5] のように、php にいくつかの変数があります。Xの数は0 から 31 になり、それ以上になることもあります。この多くの変数には数字しか含まれていません。この数字をチェックして、$ng* ex: $ng0 $ng1 $ng2 $ng3 $ng4 または $ng[0] などの変数に変換し、それらをエコーし​​ます。したいところ。

<?php
$ng0="G";
if ($parsed[0][4] == "0") {
$ng0="NG";
}
if ($parsed[0][5] == "0") {
$ng0="NG";
}
$ng1="G";
if ($parsed[1][4] == "0") {
$ng1="NG";
}
if ($parsed[1][5] == "0") {
$ng1="NG";
}
$ng2="G";
if ($parsed[2][4] == "0") {
$ng2="NG";
}
if ($parsed[2][5] == "0") {
$ng2="NG";
}
$ng3="G";
if ($parsed[3][4] == "0") {
$ng3="NG";
}
if ($parsed[3][5] == "0") {
$ng3="NG";
}
?>

さて、コードが 31 まではそのように進まないことをご存知でしょう! 将来的には 130 かそれ以上になるかもしれませんが、どうすればすべての $parsed[ X ][4] と $parsed[ X ][4] を自動的にチェックし、それぞれに 1 つの変数を作成できますか thx.

4

1 に答える 1

2

通常のforループを使用するだけです:

<?php
    $ng = array();
    for ($i = 0; $i < count($parsed); $i++) {
        if ($parsed[$i][4] == "0" || $parsed[$i][5] == "0") {
            $ng[$i] = "NG";
        } else {
            $ng[$i] = "G";
        }
    }
    print_r($ng);
?>

または、変数のアイデアを本当に使用したい場合 (変数をスパムに使用しないでください。代わりに配列を使用してください):

<?php
    for ($i = 0; $i < count($parsed); $i++) {
        $variableName = "ng" . $i;
        if ($parsed[$i][4] == "0" || $parsed[$i][5] == "0") {
            $$variableName = "NG";
        } else {
            $$variableName = "G";
        }
    }

    $vars = get_defined_vars();
    foreach ($vars["GLOBALS"] as $variableName => $value) {
        if (preg_match("/^ng([0-9]+)$/", $variableName)) {
            echo $variableName . " is " . $value . PHP_EOL;
        }
    }

    /*
        ng0 is NG
        ng1 is G
        ....
        ng29 is NG
        ng30 is NG
    */
?>
于 2013-08-12T16:18:44.127 に答える