没有索引的PHP array_unique

时间:2012-10-01 18:23:01

标签: php arrays

我一直试图在某种程度上找到与array_unique()类似的东西,或者从数组中删除所有重复项。但是在这种特殊情况下,我需要一个逗号间隔数组作为结果而不是键值对。如果可以的话,我想做的是避免通过循环来执行此操作。

因此,如果我可以将array_unique()之类的东西应用到我的数组中,那么在删除数字索引之后我就会全力以赴地提出建议。

目前我正在通过循环构建初始数组,这种外观循环超过5到150,000个条目,其中一个特定条目可以具有大约1,000个可能的3点样式版本号中的任何一个。这就是我构建这个数组的原因。所以我有很多重复项放入数组

示例:

$myarray = array();
foreach($obj as $prod)
{
   //cycling over the master loop adding all my other stuff and building it out..
   $myarray[] = $prod['version'];
}

以我想要的格式给我一个很大的数组

Array(
   "1.0.0",
   "1.0.1",
   "3.0.2220",
   "2.0.0",
   "2.0.1",
   "1.8.11",
   "3.0.2220",
   "3.0.2220",
   "2.0.0",
   "2.0.0",
   "2.0.0"
)

如果循环完成,我会这样做。

$myarray = array_unique($myarray);

这给了我一个像

这样的数组
Array(
  [0] = "1.0.0",
  [1] = "1.0.1",
  [2] = "3.0.2220",
  [3] = "2.0.0",
  [4] = "2.0.1",
  [5] = "1.8.11",
)

这是不希望的,最终结果是什么...

Array(
   "1.0.0",
   "1.0.1",
   "3.0.2220",
   "2.0.0",
   "2.0.1",
   "1.8.11",
)

然后我可以将其排序到最早到最新版本的列表..

2 个答案:

答案 0 :(得分:4)

此:

Array(
  [0] = "1.0.0",
  [1] = "1.0.1",
  [2] = "3.0.2220",
  [3] = "2.0.0",
  [4] = "2.0.1",
  [5] = "1.8.11",
)

和此:

Array(
   "1.0.0",
   "1.0.1",
   "3.0.2220",
   "2.0.0",
   "2.0.1",
   "1.8.11",
)

相同的事物,在PHP中,所有数组都有一个索引,在最后一个例子中,它只是不打印它们,但它们在那里,如果你没有明确指定索引,它们只是从零开始的顺序整数,就像第一个例子一样。

在上一个示例中,显然没有索引的示例,如果我们将其称为$array,我们可以执行以下操作来打印索引:

foreach ($array as $key => $value) {
   echo $key; //this will print the indexes of the array
}

答案 1 :(得分:0)

你想要一个没有键的数组吗?每个数组都有键。