stdClass Object ([id] => 11 [type] => 5 [color_a] => 57 [color_b] => 3 [date] => 2)
如何檢查對象是否具有包含字符串「color」的屬性?檢查對象是否包含與字符串匹配的屬性
我試着用array_diff_key和array_filter,但我不能使用ARRAY_FILTER_USE_KEY,因爲它運行在PHP 5.4上。
沒有循環如果可能的話:)
stdClass Object ([id] => 11 [type] => 5 [color_a] => 57 [color_b] => 3 [date] => 2)
如何檢查對象是否具有包含字符串「color」的屬性?檢查對象是否包含與字符串匹配的屬性
我試着用array_diff_key和array_filter,但我不能使用ARRAY_FILTER_USE_KEY,因爲它運行在PHP 5.4上。
沒有循環如果可能的話:)
這應該爲你工作:
(這裏我只投了對象的數組,並與preg_grep()
在array_keys()
搜索然後,我只是翻轉陣列回來。 array_flip()
)
$result = array_flip(preg_grep("/\bcolor/", array_keys((array)$o)));
print_r($result);
輸出:
Array ([color_a] => 2 [color_b] => 3)
如果你只是想用它來檢查TRUE或FALSE像in_array()你不需要翻轉回來,你可以簡單地使用這樣的:
if(preg_grep("/\bcolor/", array_keys((array)$o)))
echo "match";
喜...
function isKeyExists($key,$array){
$arr = preg_grep('/.*'.$key.'.*/',array_keys($array));
if(count($arr)){
return true;
}
return false;
}
$arr = Array('id'=>'11','type'=>5,'color_a'=>57,'color_b'=>3,'date'=>2);
isKeyExists('color_',$arr); // return boolean if exists or not
希望它有一點幫助。
沒有正則表達式的解決方案:
$std = new StdClass();
$std->id = 11;
$std->type = 5;
$std->color_a = 57;
$std->color_b = 3;
$std->date = 2;
$result = array();
$searchFor = 'color';
array_map(function($value) use(&$result, $searchFor){
if(strpos($value, $searchFor) !== false){
$result[] = $value;
}
}, array_keys((array)$std));
var_dump(count($result));
可能重複:http://stackoverflow.com/questions/2471120/php-function-array-key-exists-and-regular-expressions – YyYo 2015-04-01 17:39:08