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]";
}