我需要检查DOMNode
对象数组是否包含相似DOMNode
对象数组中的所有项目。
通常,要检查一个数组是否包含另一个数组,我尝试了此问题中概述的一些方法。然而,无论是array_intersect()
和array_diff()
对基础比较数组项(string) $elem1 === (string) $elem2
它引发以下错误的-DOMElements
因为他们无法转换为字符串。
PHP Catchable fatal error:
Object of class DOMElement could not be converted to string in...
处理此问题的正确方法是什么?
我已经做到了这一点似乎可行,例如,我用各种对象和类型填充了两个数组,只是看它是否有效:
$array = array(new DOMDocument(), 'foobar', 112312, new DateTime('Y'));
$array2 = array(new DOMDocument(), 'foobar',12312, false, new DateTime('Y'), 112312, true);
var_dump(array_diff_two($array,$array2)); //returns true
$array = array(new DOMDocument(), 'foobar', 112312, new DateTime('m'));
$array2 = array(new DOMDocument(), 'lorem ipsum!',12312, false, new DateTime('Y'), 112312, true);
var_dump(array_diff_two($array,$array2)); //returns false
function array_diff_two($array1, $array2){
// serialize all values from array 2 which we will check if they contain values from array 1
$serialized2 = array();
foreach ($array2 as $value){
$serialized2[] = serialize($value);
}
// Check if all values from array 1 are in 2, return false if it's not found
foreach ($array1 as $value) {
if (! in_array(serialize($value), $serialized2)) {
return false;
}
}
return true;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句