我有多维数组与键值对,所以我想翻转,即键值到位值和值到达键位但我得到错误
我的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!
怎么解决这个?
您正在尝试翻转多维数组,其中每个值都是一个数组,但根据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
您可以尝试以下方式
$arr = [
[ 'userid' => 1, ],
[ 'userid' => 2, ],
[ 'userid' => 3, ]
];
array_walk($arr, function(&$val) { $val = array_flip($val); });
array_flip()不会将数组作为值翻转。 array_flip()只能翻转字符串和整数值。
你可以试试这个:
$arr = [
[ 'userid' => 1 ],
[ 'userid' => 2 ],
[ 'userid' => 3 ]
];
foreach($arr as $a){
$flipped[] = array_flip($a);
}
print_r($flipped);