阵列翻转碰撞问题

时间:2013-08-06 22:15:12

标签: php arrays

是否有一个我不知道的函数/方法,避免在翻转数组时删除类似的键。示例如下:

原始数组:

Array ( [last_modified] => input [published] => input [project_content] => textarea ) 

使用数组翻转(键碰撞):

Array ( [input] => published [textarea] => project_content )

2 个答案:

答案 0 :(得分:4)

如果要保留键,可以使用二维数组:

<?php
$arr = array ( 'last_modified' => 'input', 'published' => 'input', 'project_content' => 'textarea' );
$result = array();
foreach($arr as $k => $v) {
    if (array_key_exists($v, $result)) {
        $result[$v][] = $k;
    } else {
        $result[$v] = array($k);        
    }
}
print_r($result);
?>

This will print out:

Array
(
    [input] => Array
        (
            [0] => last_modified
            [1] => published
        )

    [textarea] => Array
        (
            [0] => project_content
        )

)

答案 1 :(得分:1)

有一种简单的方法可以使用标准函数"input"获取数组中具有值array_keys的所有键:

$keys = array_keys($array, "input");

就是这样; see it in action