在PHP中将关联数组转换为索引数组

时间:2014-03-19 17:34:42

标签: php arrays

我必须关注数组:

Array
(
[0] => Array
    (
        [clave_su] => CAD
        [nombre_su] => CENTRO DE APOYO AL DIAGNOSTICO
    )

[1] => Array
    (
        [clave_su] => CADIT
        [nombre_su] => CENTRO DE APOYO AL DIAGNOSTICO E INGENIERIA TISULAR
    )

我期待的是:

Array
(
    [0] => Array
        (
            [0] => CAD
            [1] => CENTRO DE APOYO AL DIAGNOSTICO
        )

    [1] => Array
        (
            [0] => CADIT
            [1] => CENTRO DE APOYO AL DIAGNOSTICO E INGENIERIA TISULAR
        )
)

我尝试的是使用PHP的array_values函数。

但我无法让它发挥作用..

有什么想法吗?

由于

5 个答案:

答案 0 :(得分:1)

试试这个

foreach ($array as $&item) {
    $item = array_values($item);
}

答案 1 :(得分:1)

怎么样:

foreach ($array as $key => $value) {
    $array[$key] = array_values($value);
}

答案 2 :(得分:0)

您可以使用array_values()遍历原始数组并删除密钥。可能看起来像这样:

// your initial array
$array = array(
    array(
        'clave_su' => 'CAD',
        'nombre_su' => 'CENTRO DE APOYO AL DIAGNOSTICO'
    ),
    array(...),
    ...
);
// transform inner arrays to be numerically indexed
array_walk($array, function(&$sub_array, $key_not_used) {
    $sub_array = array_values($sub_array);
});

答案 3 :(得分:0)

与使用array_keys的解决方案不同,此代码段确保从键到索引的转换始终相同。这意味着如果条目缺少某个键,或者定义顺序在所有条目中都不相同,则始终使用给定索引访问相同的数据。

function array_assoc2index ($input) {
    $output = array();
    $keycount = 0;
    $keys = array();

    foreach ($input as $val) {
        $a = array();
        foreach ($val as $k => $v) {
            if (!isset($keys[$k]))
                $keys[$k] = $keycount++;
            $a[$keys[$k]] = $v;
        }

        $output[] = $a;
    }

    return $output;
}

答案 4 :(得分:0)

最简单的单行:

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