最奇怪的事情发生在我身上......
我有一个表单,通过 ajax post(使用 jquery 的序列化函数)发送到运行此函数的 php 脚本(为了清楚起见,进行了精简):
$arr = $_POST;
unset($arr['command']);
unset($arr['index']);
$vals = $arr;
$keys = $arr;
$keys = array_flip($keys);
return 'vals= ' . implode(',',$vals) . ' keys = ' . implode(',',$keys);
我发送的有效字符串看起来像这样......
这给了我结果...
现在,当我从“关于”(在标题字段中)中删除“S”时,我得到的数据字符串如下所示:
这给了我这个结果:
“标题”键已完全从等式中删除!
有什么想法会发生什么吗?
在翻转数组时,如果某个值出现多次,则将使用最新的键作为其值,所有其他键将丢失。
示例(来自手册)
<?php
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);
?>
输出:
Array
(
[1] => b
[2] => c
)
array_flip
不仅仅是返回数组键的数组。相反,它将 key → value 的映射翻转为 value → key。当翻转具有重复值的数组时,只会使用最新的键:
如果某个值出现多次,则将使用最新的键作为其值,其他所有键都将丢失。
array_keys
代替。