引用包含在数组中的索引的最佳方法

时间:2011-08-03 04:50:56

标签: php arrays

在php中,我愿意检查是否存在与数组中其他值匹配的索引。

$indexes = array("index", "id", "view");
$fields = array(
    "index" => 5,
    "id"    => 7,
    "form"  => 10,
    "date"  => 10,
);

在这种情况下,我的理想结果是获得“形式”和“约会”。有什么想法吗?

5 个答案:

答案 0 :(得分:5)

尝试

$fields_keys = array_keys($fields);
$fields_unique = array_diff($fields_keys, $indexes);

结果将是$fields中不在$indexes中的所有键的数组。

答案 1 :(得分:2)

你可以试试这个。

<?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);

答案 2 :(得分:1)

您的问题有点不清楚,但我认为这就是您的目标

array_keys(array_diff_key($fields, array_fill_keys($indexes, null)));
#=> Array( 0=>"form", 1=>"date" )

tehplayground.com

上查看此处的工作

array_keys(A) array A 的键作为数字索引数组返回。
array_fill_keys(A, value)使用数组A 作为键填充新数组,并将每个键设置为 value
array_diff_key(A,B)返回数组B 中不存在的 array A 中的键数组。

编辑开启我的答案变得更加复杂,因为我更了解原始问题。这个页面有更好的答案,但我仍然认为这是一个有趣的解决方案。

答案 3 :(得分:1)

您可以使用array_keys函数来检索数组的键

例如:

$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

输出

Array
(
    [0] => 0
    [1] => color
)

PHP Documentation

答案 4 :(得分:0)

可能有一种比这更顺畅的方式,但它会让你开始:

foreach(array_keys($fields) as $field) {
    if(!in_array($field, $indexes)) {
        $missing[] = $field;
    }
}

现在您将拥有一个包含表单和日期的数组。