hi,
  we should only warn the un-intenional convertion .

   So , give third to send make printable zavl.  Sppress all the
intentional ones.

Thanks

Sent from my iPhone

在 2011-11-3,4:23,Patrick ALLAERT <patrickalla...@php.net> 写道:

> 2011/11/2 Etienne Kneuss <col...@php.net>:
>> 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.
>
> That was indeed my exact intention when doing that patch.
>
>>> 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.
>
> Exactly.
>
> No more no less than you expect:
> array_diff( array( new stdClass ), array( "stdClass" ) );
> to produce:
> PHP Catchable fatal error:  Object of class stdClass could not be
> converted to string in ...
>
>>> 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

Reply via email to