Edit report at https://bugs.php.net/bug.php?id=60278&edit=1

 ID:                 60278
 Updated by:         ras...@php.net
 Reported by:        kontakt at beberlei dot de
 Summary:            BC Break + warning in array_diff with nested arrays
-Status:             Open
+Status:             Bogus
 Type:               Bug
 Package:            Arrays related
 PHP Version:        5.4.0RC1
 Block user comment: N
 Private report:     N

 New Comment:

This isn't a BC break. This is a NOTICE telling you that your code isn't doing 
what you think it is. As per the array_diff() docs:

"This function only checks one dimension of a n-dimensional array."

Change your example to this:

$a = [0 => ["foo"]];
$b = [0 => ["bar"]];
$d = array_diff($a, $b);

This comes back and tells you that the arrays are identical. But they obviously 
aren't. Or even worse:

$a = [0 => "Array"];
$b = [0 => ["bar"]];
$d = array_diff($a, $b);

This also comes back with no difference between $a and $b exactly because the 
function only checks one level deep and you are passing it multi-dimensional 
arrays. Notices like this are there to tell you when you are doing something 
that might not produce the results you are expecting, and this is a very 
obvious 
example of that.


Previous Comments:
------------------------------------------------------------------------
[2011-11-15 00:55:51] fel...@php.net

The difference is only the E_NOTICE message, the code behaves in the sameway.

------------------------------------------------------------------------
[2011-11-12 09:55:34] kontakt at beberlei dot de

Description:
------------
A warning occurs when you call array_diff with one nested and one flat array. 
This code worked on 5.3.

Test script:
---------------
<?php

$a = array(0 => "id");
$b = array(0 => array("foo" => "bar"));

$d = array_diff($a, $b);

var_dump($d);

Expected result:
----------------
array(1) {
  [0]=>
  string(2) "id"
}


Actual result:
--------------
Notice: Array to string conversion in /home/benny/code/php/tests/array_diff.php 
on line 6
array(1) {
  [0]=>
  string(2) "id"
}



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60278&edit=1

Reply via email to