Php 检查对象是否包含与字符串匹配的属性

Php 检查对象是否包含与字符串匹配的属性,php,Php,如何检查对象是否具有包含字符串“color”的属性 我尝试使用array_diff_key和array_filter,但我不能使用array_filter_use_key,因为它在PHP5.4上运行 如果可能,请不要循环:)这应该适合您: (在这里,我只是将对象强制转换为一个数组,并在中使用进行搜索。然后我只需使用将数组翻转回来) 输出: $result = array_flip(preg_grep("/\bcolor/", array_keys((array)$o))); print_r($r

如何检查对象是否具有包含字符串“color”的属性

我尝试使用array_diff_key和array_filter,但我不能使用array_filter_use_key,因为它在PHP5.4上运行


如果可能,请不要循环:)

这应该适合您:

(在这里,我只是将对象强制转换为一个数组,并在中使用进行搜索。然后我只需使用将数组翻转回来)

输出:

$result = array_flip(preg_grep("/\bcolor/", array_keys((array)$o)));
print_r($result);
如果你只想用它来检查真或假,比如in_array(),你不需要把它翻回去,你可以这样简单地使用它:

Array ( [color_a] => 2 [color_b] => 3 )
无正则表达式解决方案:

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
可能的重复:
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));