搜索數組鍵說我有以下數組:通配符
$arr = array(
"number2"=>"valid",
"number13"=>"valid"
);
,我需要找到,如果存在與number*
存在的關鍵。
對於$arr
,這是對的。對於以下陣列:
$arr2 = array(
"key"=>"foo",
"key2"=>"foo2"
);
這將返回false。
搜索數組鍵說我有以下數組:通配符
$arr = array(
"number2"=>"valid",
"number13"=>"valid"
);
,我需要找到,如果存在與number*
存在的關鍵。
對於$arr
,這是對的。對於以下陣列:
$arr2 = array(
"key"=>"foo",
"key2"=>"foo2"
);
這將返回false。
這個假設數字需要跟一個實際的數字(編輯:或者根本沒有),根據需要調整正則表達式。例如,任何以「數字」開頭的內容,都可以使用/^number/
。
if(count(preg_grep('/^number[\d]*/', array_keys($arr))) > 0)
{
return true;
}
else
{
return false;
}
使用正則表達式。
foreach ($arr as $key => $value) {
// NOTE: check for the right format of the regular expression
if (preg_match("/^number([0-9]*)$", $key)) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
}
這會起作用,但像@mario建議的那樣,'array_keys'上的'preg_grep'更簡單,更「程序化」。 PHP有很多很多有用的數組函數來保存輸入。 – sgroves
這對我來說非常有用。我有一個電子郵件收件人和電臺選項表,其中第1列是發件人(只允許一個),第2列第3列中的人員具有「收件人」,「抄送」和「不適用」的廣播選項。值所選內容是在$ _POST中攜帶的。在下一頁,我需要通過$ _POST進行解析,然後查找以「收音機」開頭的密鑰,以使該人成爲發件人,「收件人」收件人,「CC」收件人或根本不發送郵件( 「NA」)。 – user208145
下面是一個簡單的函數,它會做你想要什麼:
function preg_grep_key($pattern, $input) {
return preg_grep($pattern, array_keys($input));
}
// ----- Usage -----
$arr = array(
"number2"=>"valid",
"number13"=>"valid"
);
if (count(preg_grep_key('/^number/', $arr)) === 0) {
// Nope
} else {
// Yep
}
很多的方式來處理它 - 一個普通的老'的foreach()'循環追加到輸出數組,或者如果你想要變得聰明,'array_filter()'加'array_flip()'。 –
您可以使用'array_key_exists'來檢查特定的數組密鑰,但是沒有可用的通配符版本。您可以使用循環來檢查多個值。 –
或['array_keys()'](http://php.net/array_keys)上的''preg_grep()'](http://php.net/preg_grep)。 – mario