0

我在 php 中有一些变量,例如: $parsed[ X ][4] 和 $parsed[ X ][5] X的数量从 0 到 31 甚至更多。这么多变量只包含数字,我想检查这些数字并转换为 $ng* 之类的变量 例如:$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] 并为每个变量创建一个变量,谢谢。

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 回答