array_diff() 在过滤对象数组时失败

问题描述 投票:0回答:1

我试图“比较”两个数组,PHP 返回以下错误:

Catchable fatal error: Object of class Node could not be converted to string in D:\projetos\labs\dok\dev\application\models\dok.php on line 410

我的数组分别是:

array(2)
    object(Node)#5 ...[7 attributes]
    object(Node)#6 ...[7 attributes]

array(1)
    object(Node)#5 ....[7 attributes]

我真的很感谢这里的一些帮助,因为我不知道发生了什么。


根据要求,差异周围的代码:

// is it a distant child?
$all_childs = $node->get_childs(true);
$distant_childs = array_diff($all_childs, $childs);
if(in_array($this, $distant_childs))
    return 'distant-child';
php arrays filter array-difference
1个回答
2
投票

注:

两个元素被认为相等当且仅当 (string) $elem1 === (字符串)$elem2。换句话说:当字符串表示相同时。

如果元素是对象,则需要为该对象提供 __toString() 方法,或者你自己做。

© www.soinside.com 2019 - 2024. All rights reserved.