在PHP中,我愿意检查与数组中其他值匹配的索引的存在。最好的方式来引用索引,其中包含数组
$indexes = array("index", "id", "view");
$fields = array(
"index" => 5,
"id" => 7,
"form" => 10,
"date" => 10,
);
我的理想结果是,在这种情况下,得到“形式”和“日期”。任何想法?
在PHP中,我愿意检查与数组中其他值匹配的索引的存在。最好的方式来引用索引,其中包含数组
$indexes = array("index", "id", "view");
$fields = array(
"index" => 5,
"id" => 7,
"form" => 10,
"date" => 10,
);
我的理想结果是,在这种情况下,得到“形式”和“日期”。任何想法?
尝试
$fields_keys = array_keys($fields);
$fields_unique = array_diff($fields_keys, $indexes);
结果将是$fields
中不在$indexes
中的所有密钥的数组。
你的问题有点不清楚,但我认为这是你要的
array_keys(array_diff_key($fields, array_fill_keys($indexes, null)));
#=> Array(0=>"form", 1=>"date")
什么看它在这里工作的tehplayground.com
array_keys(A)返回数组A的按键为数字索引数组。
array_fill_keys(A, value)填充使用数组A作为键一个新的数组,并设置每个键值
array_diff_key(A,B)返回键从数组A的阵列中不阵列乙存在。
编辑打开我的回答变得更加复杂,因为我更了解原始问题。在这个页面上有更好的答案,但我仍然认为这是一个有趣的解决方案。
这只会工作,如果'$ indexes'也是联想:http://www.php.net/manual/en/function.array-diff-key.php - 酷法,但! – OverZealous
@OverZealous,wups,我忽略了这一点。不用担心,'array_fill_keys()'救援! –
有趣的方式!谢谢 –
您可以使用array_keys函数来获取一个数组的键
如:
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
输出
Array
(
[0] => 0
[1] => color
)
有可能是一个比这个滑头的方式,但它让你开始:
foreach(array_keys($fields) as $field) {
if(!in_array($field, $indexes)) {
$missing[] = $field;
}
}
现在你将有保存形式和日期的数组。
你可以试试这个。
<?php
$indexes = array("index", "id", "view");
$fields = array(
"index" => 5,
"id" => 7,
"form" => 10,
"date" => 10,
);
$b = array_diff(array_keys($fields), $indexes);
print_r($b);
我知道有更好的办法!做得好。 –
它的工作原理!谢谢! –
@Kei Izumi - 不要忘记标记为“接受”,如果它为你工作。 – OverZealous