【问题标题】:PHP - Find string in an ObjectPHP - 在对象中查找字符串
【发布时间】:2015-04-11 00:36:52
【问题描述】:

想在对象中查找字符串,在网上找到了这段代码,但是现成的好像不行,可以这么说:

private static function in_object($val, $obj) {
    if($val == ""){
        trigger_error("in_object expects parameter 1 must not empty", E_USER_WARNING);
        return false;
    }
    if(!is_object($obj)){
        $obj = (object)$obj;
    }

    foreach($obj as $key => $value){
        if(!is_object($value) && !is_array($value)){
            if(strpos($value,$val)!==FALSE){
                return true;
            }
        }elseif(is_array($value)) {
           if(in_array($val, $value)!==FALSE){
                return true;
            }
        }else{
            return self::in_object($val, $value);
        }
    }
    return false;
}

它不会返回错误消息,屏幕只是保持空白。我正在搜索的对象将包括数组,它是我想要测试某些文本字符串的数组之一。

希望这有一个小错误并且可以轻松修复。或者其他一些解决方案?

【问题讨论】:

  • 该类必须实现Iterator 接口。见php.net/manual/en/language.oop5.iterations.php
  • 您需要更具体地说明什么不起作用 - 您是否收到错误消息?或者是否有一个具体的例子,你可以给出结果不是你期望/想要的? (请编辑问题并添加详细信息,不要只是将它们发布为 cmets。)

标签: php string object


【解决方案1】:

您总是可以这样做,作为一种变通方法。

$string_to_find = 'find_me';

foreach ($obj as $property => $value) {
    if ($property == $string_to_find) {
        // You found the string 
        $found_string = $property;
    }
    if ($value == $string_to_find) {
        // You found the string
        $found_string = $value;
    }
}

这将在属性或值上找到它。如果您不能 100% 确定您将始终在有效对象上使用它,则应添加一些错误处理以防止出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多