2011-08-03 41 views
0

在PHP中,我願意檢查與數組中其他值匹配的索引的存在。最好的方式來引用索引,其中包含數組

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

我的理想結果是,在這種情況下,得到「形式」和「日期」。任何想法?

回答

5

嘗試

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

結果將是$fields中不在$indexes中的所有密鑰的數組。

+0

我知道有更好的辦法!做得好。 –

+0

它的工作原理!謝謝! –

+0

@Kei Izumi - 不要忘記標記爲「接受」,如果它爲你工作。 – OverZealous

1

你的問題有點不清楚,但我認爲這是你要的

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的陣列中不陣列乙存在。

編輯打開我的回答變得更加複雜,因爲我更瞭解原始問題。在這個頁面上有更好的答案,但我仍然認爲這是一個有趣的解決方案。

+0

這隻會工作,如果'$ indexes'也是聯想:http://www.php.net/manual/en/function.array-diff-key.php - 酷法,但! – OverZealous

+0

@OverZealous,wups,我忽略了這一點。不用擔心,'array_fill_keys()'救援! –

+0

有趣的方式!謝謝 –

1

您可以使用array_keys函數來獲取一個數組的鍵

如:

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

輸出

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

PHP Documentation

0

有可能是一個比這個滑頭的方式,但它讓你開始:

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

現在你將有保存形式和日期的數組。

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); 
相關問題