将多维数组转换为简单数组?

时间:2013-08-12 16:15:40

标签: php arrays

我在php中有一些变量,比如:$ parsed [ X ] [4]和$ parsed [ X ] [5] 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以后,或者更多,所以如何自动检查所有$解析[ X ] [4]&amp; $解析[ X ] [4]并为每个人制作一个变量,thx。

1 个答案:

答案 0 :(得分: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
    */
?>