From:             of dot olivier dot favre at gmail dot com
Operating system: 
PHP version:      5.4.17
Package:          Arrays related
Bug Type:         Feature/Change Request
Bug description:array_unique with SORT_REGULAR inconsistently compare 1 and "1"

Description:
------------
The doc claims “SORT_REGULAR - compare items normally (don't change
types)”
Hence (int)1 and (string)"1" should both be considered non duplicates.

Current results with SORT_REGULAR are too unpredictable for this
function/flag to 
be useful.

See #47370:
“I think it's better for SORT_REGULAR to compare elements by using ===
instead of 
==.”

Request:
Add a SORT_STRICT flag using strict === comparison between elements.
(prevents 
from changing SORT_REGULAR behavior).


Tested on:
Debian GNU/Linux 7.1 (wheezy)
$ php --version
PHP 5.4.4-10 (cli) (built: Nov 24 2012 11:21:26) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.2.0, Copyright (c) 2002-2012, by Derick Rethans

Test script:
---------------
var_export(array_unique(array( 1, 2, 2, 3, "1"), SORT_REGULAR)); // "1" is
suppressed!
echo "\n";
var_export(array_unique(array( 1, 2, 2, 3, "1", "c"), SORT_REGULAR)); //
"1" and "c" are kept (as it should be)
echo "\n";

// Weirder, with the same values in an other order
var_export(array_unique(array( 1, 2, 2, 3, "1", "c"), SORT_REGULAR)); //
"1" and "c" are kept (as it should be)
echo "\n";
var_export(array_unique(array( "c", 1, 2, 2, 3, "1"), SORT_REGULAR)); //
"1" is suppressed!
echo "\n";

Expected result:
----------------
array (
  0 => 1,
  1 => 2,
  3 => 3,
  4 => '1',
)
array (
  0 => 1,
  1 => 2,
  3 => 3,
  4 => '1',
  5 => 'c',
)
array (
  0 => 1,
  1 => 2,
  3 => 3,
  4 => '1',
  5 => 'c',
)
array (
  0 => 'c',
  1 => 1,
  2 => 2,
  4 => 3,
  5 => '1',
)


Actual result:
--------------
array (
  0 => 1,
  1 => 2,
  3 => 3,
)
array (
  0 => 1,
  1 => 2,
  3 => 3,
  4 => '1',
  5 => 'c',
)
array (
  0 => 1,
  1 => 2,
  3 => 3,
  4 => '1',
  5 => 'c',
)
array (
  0 => 'c',
  1 => 1,
  2 => 2,
  4 => 3,
)


-- 
Edit bug report at https://bugs.php.net/bug.php?id=65208&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=65208&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=65208&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=65208&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=65208&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=65208&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=65208&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=65208&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=65208&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=65208&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=65208&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=65208&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=65208&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=65208&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65208&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=65208&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=65208&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=65208&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65208&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=65208&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=65208&r=mysqlcfg

  • [PHP-BUG] Req #65208 [NEW]: arra... of dot olivier dot favre at gmail dot com

Reply via email to