array_unique没有给出预期的结果

时间:2013-09-02 16:42:00

标签: php array-unique

我正在尝试获取数组的所有唯一值。

$Arr_TitleID = "92 1 92 38 1 6 1";
echo "Arr_TitleID: " . $Arr_TitleID;

$TitleID_Explode = explode(" ", $Arr_TitleID);
$BigTitleID_Explode = array_unique($TitleID_Explode);

$CTID_count = count($BigTitleID_Explode);
echo "count(CTID_count): " . $CTID_count;

for($i = 0; $i < $CTID_count; $i++)
{
    echo "Piece $i = $BigTitleID_Explode[$i]";
}

输出

Arr_TitleID: 92 1 92 38 1 6 1
count(CTID_count): 4
Piece 0 = 92
Piece 1 = 1
Piece 2 = 
Piece 3 = 38

6号在哪里?为什么6号应该是空白?

3 个答案:

答案 0 :(得分:0)

数组索引不是连续的,如0,1,2,3

数组索引是0,1,3,5

Array
(
    [0] => 92
    [1] => 1
    [3] => 38
    [5] => 6
)

所以编辑这样的代码,只需添加一行作为数值重新索引

$Arr_TitleID = "92 1 92 38 1 6 1";
echo "Arr_TitleID: " . $Arr_TitleID;

$TitleID_Explode = explode(" ", $Arr_TitleID);
$BigTitleID_Explode = array_unique($TitleID_Explode);

//只需添加下面的行

$BigTitleID_Explode = array_values($BigTitleID_Explode);

//

$CTID_count = count($BigTitleID_Explode);
echo "count(CTID_count): " . $CTID_count;

for($i = 0; $i < $CTID_count; $i++)
{
    echo "Piece $i = $BigTitleID_Explode[$i]";
}

答案 1 :(得分:0)

您的脚本输出如下所示,

Array
(
    [0] => 92
    [1] => 1
    [3] => 38
    [5] => 6
)

要使用for loop进行迭代,您应该使用array_values或尝试使用foreach循环代替for

使用array_values,您将获得一个数字索引数组

$BigTitleID_Explode = array_values(array_unique($TitleID_Explode));

结果应该是,

Array
    (
        [0] => 92
        [1] => 1
        [2] => 38
        [3] => 6
    )

答案 2 :(得分:0)

这是你的问题。当您可能找到唯一值时,数组不会创建新键,因此您的计数器不会高到足以捕获最后一个键。

$Arr_TitleID = "92 1 92 38 1 6 1";
echo "Arr_TitleID: " . $Arr_TitleID;
$TitleID_Explode = explode(" ", $Arr_TitleID);
$BigTitleID_Explode = array_unique($TitleID_Explode);
print_r($BigTitleID_Explode);
$CTID_count = count($BigTitleID_Explode);
echo "count(CTID_count): " . $CTID_count;
for($i = 0; $i < $CTID_count; $i++)
{
    echo "Piece $i = $BigTitleID_Explode[$i]";
}

我添加的print_r行输出: 数组([0] =&gt; 92 1 =&gt; 1 [3] =&gt; 38 [5] =&gt; 6)

值6在键5上。

我建议在我添加的行所在的地方使用排序功能,然后一切都会正常运行。

有很多可供选择,所以我不能推荐一个,因为我不知道你需要哪一个用于你的目的,但这里有一个参考列表。

http://www.w3schools.com/php/php_ref_array.asp