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