调用array_unique后删除未定义的数组索引

D. *_*ngh 3 php

$almostallTech=array();
$almostallTech[]="no";
$almostallTech[]="no";
$almostallTech[]="yes";
$almostallTech[]="yes";
$almostallTech[]="no";
$almostallTech[]="yes";

$almostallTech=array_unique($almostallTech);
printf("size of array: %d<br/>", sizeof($almostallTech));

for ($x = 0; $x < (sizeof($almostallTech)); $x++) {
    printf("%s", $almostallTech[$x]);
}
Run Code Online (Sandbox Code Playgroud)

调用unique方法后,返回大小为2 - 这是正确的.然而,for循环给出了未定义的偏移误差.

进一步检查,如果我打印出来:

printf("%s", $almostallTech[0]); - I get no
printf("%s", $almostallTech[2]); - I get yes
printf("%s", $almostallTech[1]); - undefined offset error
Run Code Online (Sandbox Code Playgroud)

因此,唯一的功能是删除重复项,但保留前一个数组的相同索引 - 这是它的工作原理.这应该很简单,但无法弄清楚如何删除空或更具体的未定义索引.尝试了array_filter但仍然无法正常工作.有什么建议?

我想要的是在调用array_unique方法之后,删除重复项但应该应用新索引.即:我希望$ almostallTech [0]包含"否"我希望$ almostallTech [1]包含"是"

Ama*_*ali 7

因为array_unique()不重新索引数组.您必须使用数字array_values()或其他类似函数以数字方式重新索引数组:

$almostallTech = array_values($almostallTech);
Run Code Online (Sandbox Code Playgroud)