2

多次元配列に値を設定するのは簡単です。例えば:

$myArray['levelA']['levelB']['levelC'] = $value

読むのも簡単です。例えば:

$value = $myArray['levelA']['levelB']['levelC']-

使用されているレベルの数がわかれば簡単です。しかし、発生する可能性のあるレベルがいくつあるかわからない場合はどうなりますか?

このような設定ファイルがある場合はどうなりますか?

levelA.levelB.levelC.levelD = someValue

levelA.levelB.levelC.levelDそして、それを(「パス」として)多次元配列にマップするために使用したい場合はどうなりますか?

4

2 に答える 2

1

これが私が書いた、次元の数を決定する小さなクラスです。簡単に変更して、必要なことを実行したり、返された数値を使用して独自の関数をガイドしたりできます。

class DimensionCounter {

    var $i;

    public function count($array) {
        $this->i = 1;
        return $this->readArray($array);
    }

    private function readArray($array) {

        foreach($array as $value) {
            if (is_array($value)) {
                $this->i++;
                $this->readArray($value);               
            }
            return $this->i;
        }
    }
}

あなたの場合、あなた$counter = new DimensionCounter(); $num = $counter->count($value);に次元の数を与えるでしょう。

于 2013-01-10T00:54:35.460 に答える
-1

しかし、発生する可能性のあるレベルがいくつあるかわからない場合はどうなりますか?

レベルがいくつあるかわからないだけです。

isset()とにかく簡単に見つけるために使用することができます:

$exists = isset($myArray['levelA']['levelB']['levelC']['levelD']);

しかし、私はあなたの質問を理解するのにいくつかの問題があることも認めなければなりません。

何方をお探しですか:

または類似?

于 2013-01-10T00:04:53.950 に答える