我正在尝试获取数组的所有唯一值。
$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]";
}