如何使用array_flip在PHP中翻转多维数组

问题描述 投票:0回答:3

我有多维数组与键值对,所以我想翻转,即键值到位值和值到达键位但我得到错误

我的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!

怎么解决这个?

php arrays
3个回答
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


0
投票

您可以尝试以下方式

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

0
投票

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

你可以试试这个:

 $arr = [
   [ 'userid' => 1 ],
   [ 'userid' => 2 ],
   [ 'userid' => 3 ]
];
foreach($arr as $a){
    $flipped[] = array_flip($a);
}
print_r($flipped);
© www.soinside.com 2019 - 2024. All rights reserved.