PHPの配列でキーを再採番する方法

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

PHPの配列で歯抜けになったキーを再採番する方法

PHPでarray_uniqueなどの配列用関数を使うと、配列のキー(添字、要素名)が、連想配列でなく数値の場合、バラバラになる(連番にならない)ことがある。

これを、ちゃんと連番にしたい。いい方法はないか。

結論

sortをかます。もしくはrsort。

簡単なことでした。forループとか無駄なことを考えてました。配列に要素を突っ込んだ順をキープしたいなら別だけど。

■問題

例えば下記のような配列があった場合、

$aTemp[] = "a";
$aTemp[] = "a";
$aTemp[] = "b";
$aTemp[] = "b";
$aTemp[] = "d";
$aTemp[] = "d";
$aTemp = array_unique($aTemp);
print_r($aTemp);

出力結果は以下の通り。

Array
(
[0] => a
[2] => b
[4] => d
)

■トラブルになりうる原因

forループなどで処理するときにアウチとなる可能性があるんです。

for($i=0;$i<count($aTemp);$i++){
	echo $aTemp[$i];
}

とすると、結果が

ab

となるんです。”abd”と欲しいのに。
あー、アカポンタン。

■ちゃんとちゃんとの連番

先のと同じ、下記のような配列があった場合、

$aTemp[] = "a";
$aTemp[] = "a";
$aTemp[] = "b";
$aTemp[] = "b";
$aTemp[] = "d";
$aTemp[] = "d";

ユニークな(一意の)値だけを抽出して、かつ連番にしたい場合は

$aTemp = array_unique($aTemp);
sort($aTemp);
print_r($aTemp);

出力結果は以下の通り。

Array
(
[0] => a
[1] => b
[2] => d
)

チャンと並んだ大五郎。
そういえば「子連れ狼」の続編が大五郎を主人公に始まってます。大五郎、子供のクセに強くて素直でかっこいい。

関連記事

xrea.comサーバにPEARをインストールする方法... Monoar / Pixabay CGIモードでgo-pear.phpを実行 xrea.comで、PEARのWEBインストーラーであるgo-pear.phpを使ってインストールしたかったのですが、何度試してもtempフォルダの権限が変わってしまい、エラーになってしまいます。 結論...
私のGeeklogのMVC的使い方(WebAPI化) GeeklogをWEBサービス的にAPI化する 2013/09/11 追記:5年半前の記事ですっかり放置していたのですが、なんと恐れ多くもGeeklogのivyweさんからコメントをいただきました。m(_ _;)m ガクガクブルブル すっかりKEINOSはGeeklog離れしていたのですが、...
PHPの多次元連想配列をマージする 添え字付き多次元配列の結合 一般的に配列のマージ(結合)は"+"(プラス)を使うのが一番簡単だったりするのですが、一部のキーが同じ(添え字のダブりがある)配列を結合する場合に、いささか問題がおきるケースがあります。 array_merge_recursive()関数や array_d...
Google App EngineでPHPを動かす?! "PHP Classes"のメーリングリストで、Google App EngineでPHPを動かしてみるといったポストがあったので、面白そうだと思って読みに行ってみた。 Running PHP on Google App Engine - PHP Classes blog 従来Pyt...

スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告