Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组_unique未给出预期结果_Php_Array Unique - Fatal编程技术网

Php 数组_unique未给出预期结果

Php 数组_unique未给出预期结果,php,array-unique,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_co

我试图获取数组的所有唯一值

$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”;
回声“Arr_TitleID:”$阿鲁·提特莱德;
$TitleID_Explode=Explode(“,$Arr_TitleID”);
$BigTitleID\u Explode=array\u unique($TitleID\u Explode);
$CTID_count=count($BigTitleID_Explode);
回显“计数(CTID_计数):”$CTID_计数;
对于($i=0;$i<$CTID_count;$i++)
{
echo“工件$i=$BigTitleID_爆炸[$i]”;
}
输出:

阿鲁·提特莱德:92 1 92 38 1 6 1 计数(CTID_计数):4 件号0=92 件号1=1 第2件= 第3件=38
6号在哪里?为什么数字6应该是空的呢?

数组索引不像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\u count=count($BigTitleID\u Explode);
回显“计数(CTID_计数):”$CTID_计数;
对于($i=0;$i<$CTID_count;$i++)
{
echo“工件$i=$BigTitleID_爆炸[$i]”;
}

脚本的输出如下所示

Array
(
    [0] => 92
    [1] => 1
    [3] => 38
    [5] => 6
)
要使用
for循环进行迭代
,您应该使用
数组值
,或者尝试使用
foreach
循环,而不是
for

使用
数组\u值
您将得到一个数值索引数组

$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]";
}
$Arr_TitleID=“92 1 92 38 1 6 1”;
回声“Arr_TitleID:”$阿鲁·提特莱德;
$TitleID_Explode=Explode(“,$Arr_TitleID”);
$BigTitleID\u Explode=array\u unique($TitleID\u Explode);
打印($BigTitleID__Explode);
$CTID_count=count($BigTitleID_Explode);
回显“计数(CTID_计数):”$CTID_计数;
对于($i=0;$i<$CTID_count;$i++)
{
echo“工件$i=$BigTitleID_爆炸[$i]”;
}
我添加的打印行输出以下内容: 数组([0]=>92=>1[3]=>38[5]=>6)

值6位于键5上

我建议在添加行所在的位置使用排序函数,这样一切都会顺利进行

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


如果我使用
foreach
循环,它可以正常工作。谢谢大家。我的解决方案是像这样添加array_values命令:$BigTitleID_Explode=array_values(array_unique($TitleID_Explode));替换$BigTitleID\u Explode=array\u unique($TitleID\u 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]";
}