note 8717 deleted from function.array-unique by cmb
| From: | cmb@php.net | Date: | Mon, 12 Nov 2018 14:39:11 +0000 |
| Subject: | note 8717 deleted from function.array-unique by cmb | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-209675@lists.php.net to get a copy of this message | ||
Note Submitter: jllamas at bal dot com dot mx
----
It seems that array_unique creates an exact copy of the original array and then elimitates duplicate
values. It does NOT change the "internal references" of the array. For example:
<?php
$test_alfa = array();
$test_alfa[0] = "aa";
$test_alfa[1] = "aa";
$test_alfa[2] = "aa";
$test_alfa[3] = "bb";
$test_alfa[4] = "aa";
$test_alfa[5] = "bb";
$test_alfa[6] = "cc";
$test_alfa[7] = "bb";
$test_beta= array_unique($test_alfa);
$numValues = count($test_beta);
for ($i = 0 ; $i <= 7 ; $i++)
echo("test_beta[$i] = $test_beta[$i] <br>");
echo ("Number of elements in test_beta = $numValues ");
?>
will give you the following output:
test_beta[0] =
test_beta[1] = aa
test_beta[2] =
test_beta[3] =
test_beta[4] =
test_beta[5] = bb
test_beta[6] = cc
test_beta[7] =
Number of elements in test_beta = 3
The point is that you won't get the output you'd expect if you think that the values of
the non duplicate elements are located in the first three array locations.
<?php
$numValues = count($test_beta);
for ($i=0;$i<=$numValues; $i++)
echo("test_beta[$i] = $test_beta[$i] <br>");
echo ("Number of elements in test_beta = $numValues ");
?>
will give you:
test_beta[0] =
test_beta[1] = aa
test_beta[2] =
Number of elements in test_beta = 3
Hope that saves u some debugging time!