3

次のような多次元連想配列があります。

$type = Array(
  [unit-1] = Array(
    [taxon-1] = Array(
      [0] = Array(
        [a] = 1,
        [b] = 1,
        [c] = 'string1'
      ),
      [1] = Array(
        [a] = 1,
        [b] = 1,
        [c] = 'string2'
      ),
    ),
    [taxon-2] = Array(
      [0] = Array(
        [a] = 1,
        [b] = 2,
        [c] = 'string3'
      ),
      [1] = Array(
        [a] = 1,
        [b] = 2,
        [c] = 'string4'
      ),
    ),
  [unit-2] = Array(
    [taxon-1] = Array(
      [0] = Array(
        [a] = 2,
        [b] = 1,
        [c] = 'string5'
      ),
      [1] = Array(
        [a] = 2,
        [b] = 1,
        [c] = 'string6'
      ),
    ),
    [taxon-2] = Array(
      [0] = Array(
        [a] = 2,
        [b] = 2,
        [c] = 'string7'
      ),
      [1] = Array(
        [a] = 2,
        [b] = 2,
        [c] = 'string8'
      ),
    ),
  )

すべての連想キー (unit-1、unit-2... および taxon-1、taxon-2...) を序数 (0、1... および 0、1...) に変換するにはどうすればよいですか。foreach ループを使用する必要がありますか? はいの場合、どのように使用しますか?

アレイ内のユニットと分類群の数は有限ではないことに注意してください。

4

2 に答える 2

9

確実に 2 つのレベルがある場合:

$type = array_values(array_map('array_values', $type));

配列からすべての配列キーを再インデックス化するには:

function array_reindex($array) {
    if(is_array($array)) {
        return array_map('array_reindex', array_values($array));
    } else {
        return $array;
    }
}

テストしていませんが、動作するはずです。

于 2012-06-06T18:35:26.033 に答える
0

あなたはそのために使うことができますarray_values

于 2012-06-06T18:20:32.170 に答える