我有带有键值对的多维数组,所以我想翻转,即键到达值位置,而值到达键位置,但出现错误
我的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!
如何解决这个问题?
答案 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);