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计数(CTID_count):4件0=92件1=1件2=件3=38

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

脚本的输出看起来是这样的,

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
    )

这是您的问题。虽然您可能正在查找唯一的值,但数组并没有创建新的键,因此计数器的值不够高,无法捕获最后一个键。

$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]=>92 1=>1[3]=>38[5]=>6)

值6位于键5上。

我建议在我添加的行所在的地方使用排序函数,这样一切都会很好。

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

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

数组索引不像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]";
}

相关内容

  • 没有找到相关文章

最新更新