Hi, On Wed, Nov 2, 2011 at 17:27, Stas Malyshev <smalys...@sugarcrm.com> wrote: > Hi! > >> What about array_diff(array("Array"), array(array()))? To me the sole >> act of having an array in it is an almost sure indication that the code >> is wrong somewhere... IMO it deserves a notice. > > That one would have the arrays different.
Well, they are not different elements w.r.t array_diff, so it does return array() since (string)"Array" === (string)array(). My point is: there is an implicit usage of string representations in those functions due to the cast. And it can yield various unexpected results. Another example is: array_intersect(array(array(1)), array(array(2))) === array(array(1)). Even though array(1) != array(2). To me it falls exactly within what the patch tries to achieve: report potential unintentional misuses of arrays. > Having multi-dimensonal arrays is > not an error, comparing arrays of different structure is not an error > either. Consider expression: "a" == array(). Is it an error? No, it's just a > false expression. Right, but that's not the question here. We are not normally comparing the elements, arrays or not, we are comparing their string representations, which in the case of arrays makes almost no sense to compare. > In the same way all comparisons where you compare string > to array should just say it's not equal, since we know they're not equal. I surely don't expect it to issue a Notice if I do $var == "asd" and $var turns out to be an array. But then again, it's not the question here. > > -- > Stanislav Malyshev, Software Architect > SugarCRM: http://www.sugarcrm.com/ > (408)454-6900 ext. 227 > -- Etienne Kneuss http://www.colder.ch -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php