在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