如何使用array_flip

时间:2019-02-13 06:08:11

标签: php arrays

我有带有键值对的多维数组,所以我想翻转,即键到达值位置,而值到达键位置,但出现错误

我的Php代码是:

echo '<pre>',print_r($res),'</pre>';

print_r($ res)时输出:

Array
(
    [0] => Array
        (
            [userid] => 1
        )

    [1] => Array
        (
            [userid] => 2
        )

    [2] => Array
        (
            [userid] => 3
        )

)

想要翻转此数组时输出错误:

array_flip(): Can only flip STRING and INTEGER values!

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您正尝试翻转多维数组,其中每个值都是一个数组,但是根据array_flip的文档:

  

请注意,数组的值必须是有效的键,即它们需要   可以是整数或字符串。如果值包含   错误的类型,并且相关的键/值对不会是   包括在结果中。

您可以使用array_map在每个条目上使用array_flip:

$a = [
    ["userid" => 1],
    ["userid" => 2],
    ["userid" => 3],
];

$a = array_map("array_flip", $a);

print_r($a);

结果

Array
(
    [0] => Array
        (
            [1] => userid
        )

    [1] => Array
        (
            [2] => userid
        )

    [2] => Array
        (
            [3] => userid
        )

)

查看php demo

答案 1 :(得分:0)

您可以尝试以下方式

$arr = [
   [ 'userid' => 1, ],
   [ 'userid' => 2, ],
   [ 'userid' => 3, ]
];
array_walk($arr, function(&$val) { $val = array_flip($val); });

答案 2 :(得分:0)

array_flip()不会将数组作为值翻转。 array_flip()只能翻转字符串和整数值。

您可以尝试以下方法:

 $arr = [
   [ 'userid' => 1 ],
   [ 'userid' => 2 ],
   [ 'userid' => 3 ]
];
foreach($arr as $a){
    $flipped[] = array_flip($a);
}
print_r($flipped);