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
)

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

関連記事

PHPでComet:フォーカスの当たっていないウィンドウが更新されない... PHPとprototype.jsを使ってAjaxでCometなチャットを作ろうとした。 FireFoxで動作検証していたのだが、ブラウザの複数ウィンドウを立ち上げ、別マシンでもウィンドウを立ち上げて検証していたところ、フォーカスの当たっていない(アクティブでない)ウィンドウでは、TextAre...
xrea.comサーバにPEARをインストールする方法... Monoar / Pixabay CGIモードでgo-pear.phpを実行 xrea.comで、PEARのWEBインストーラーであるgo-pear.phpを使ってインストールしたかったのですが、何度試してもtempフォルダの権限が変わってしまい、エラーになってしまいます。 結論...
PHPで画像を動的に出力する際にキャッシュさせない... PHPのGDを使って合成した画像を出力するスクリプトを作って、テスト用にタグをたくさんならべて、変化をチェックしてみた。 しかし、URLが変わらないためか、いくつかの画像が表示しきれなかったり、他と同じだったり・・・ 単発でスクリプトを叩くと、ちゃんと表示されるので...
PHPの多次元連想配列をマージする 添え字付き多次元配列の結合 一般的に配列のマージ(結合)は"+"(プラス)を使うのが一番簡単だったりするのですが、一部のキーが同じ(添え字のダブりがある)配列を結合する場合に、いささか問題がおきるケースがあります。 array_merge_recursive()関数や array_d...

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

シェアする

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