Bug #60278 [Opn->Bgs]: BC Break + warning in array_diff with nested arrays
Edit report at https://bugs.php.net/bug.php?id=60278&edit=1
ID: 60278
Updated by: rasmus@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] felipe@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
Thread (3 messages)