PHP - 将多维关联数组的键字符串转换为数字

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循环吗?如果需要,具体步骤是什么?

请注意,数组中的单位(unit)和分类(taxon)没有确定的数量。

2个回答

9
如果确实存在两个层级:
$type = array_values(array_map('array_values', $type));

重新索引数组中所有的键: ```php array_values($yourArray); ```
function array_reindex($array) {
    if(is_array($array)) {
        return array_map('array_reindex', array_values($array));
    } else {
        return $array;
    }
}

尚未测试,但应该可行。

1
太棒了。这东西好像一招就行。非常感谢。是的,现在我只需要两个级别。不过我只是想知道如果有更多级别会更复杂多少? - Томица Кораћ
1
更新了我的答案,加入了一个递归重新索引数组的函数。 - Cameron Martin

0

我确实可以这样做,并且它会完美地工作,但仅适用于键的第一级,即unit-1、unit-2等。分类键不会改变。我该如何利用array_values来递归地深入到数组中? - Томица Кораћ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接