phpstan 没传过去strip_tags

phpstan not pass over strip_tags

我有 html 的字符串,我想用 <br> 展开,但有时它可以在其他标签内。

if (in_array($param, $customOrdering, true) && $value) {
    $ordering = array_search($param, $customOrdering, true);
    $segments[$ordering] = [];
    if (in_array($param, $explodeParams, true)) {
        $values = explode('<br>', $value);
        foreach ($values as $v) {
            $testing_value = $v;
            if (!empty(trim(strip_tags($testing_value)))) {
                array_push($segments[$ordering], $this->createSegmentFromParam($param, $v));
138         } elseif (!empty(trim($v)) && $segments[$ordering]) {
139             end($segments[$ordering])->value_raw .= strip_tags($v, $this->allowedTags);
            }
        }
    } else {
        array_push($segments[$ordering], $this->createSegmentFromParam($param, $value));
    }
}

createSegmentFormParam 声明

 @return ArrayHash
 
private function createSegmentFromParam($param, $value)

我有来自 phpStan 的输出

 138    Right side of && is always false.                                    
 139    Cannot access property $value_raw on false.

任何想法如何传递?代码运行良好

对于类似的行为或 PHP Stan - False negative with array_push on property

仍然存在未解决的问题

尽量不要使用 array_push 并在行 138 上将其替换为以下内容:

$segments[$ordering][] = $this->createSegmentFromParam($param, $v);

除此之外,在您的代码开头 array_search 可能 return FALSE 您确实希望在继续执行代码之前检查此内容...