2

エクステントに似たものを見つけようとしてarray_unique()いるか、配列からすべての重複を削除しようとしています。ただし、この特定のケースでは、結果として、キーと値のペアではなく、コンマ間隔の配列が必要です。私がやりたいのは、可能であれば、これをループで実行することを避けることです。

したがってarray_unique()、数値インデックスを削除するために配列に適用できるようなものがある場合は、私はすべての提案に耳を傾けています。

現在、私はループを介して初期配列を構築しています。この外観は5〜150,000エントリを循環し、そのうちの1つの特定のエントリは約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",
)

次に、最新バージョンの順にリストに並べ替えることができます。

4

2 に答える 2

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
}
于 2012-10-01T18:28:18.643 に答える
0

キーのない配列が必要ですか?すべての配列にはキーがあります。

于 2012-10-01T18:26:34.353 に答える