phpでの多次元配列の操作に関しての質問です。


Array
(
[01] => Array
(
[-1] => 0
[0] => 田中
[1] => 北海道
)

[02] => Array
(
[-1] => 1
[0] => 鈴木
[1] => 青森
)

[03] => Array
(
[-1] => 2
[0] => 佐藤
[1] => 秋田
)

)

データベースから呼び出した情報を上記のような配列にして

最初の配列ごとに(01などのこと)表示するために

while ($row = mysqli_fetch_array($data)){

$id = $row['id'];
$item = $row['item'];
$name = $row['name'];
$kensaku[$id][$item] = $name;


foreach($kensaku as $id => $item){
  foreach($item as $id2 => $val){
echo $id2.":".$val;

  }
}

}
https://gist.github.com/e263e35f49058f7d8fb2

このようにやったのですが
結果は

-1の部分が羅列されるのみで思ったようにいきません

このような場合どうすればよいのでしょうか?

紹介だけなどは除外お願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/08/11 04:50:30
  • 終了:2012/08/12 03:34:33

ベストアンサー

id:Cherenkov No.1

Cherenkov回答回数1502ベストアンサー獲得回数4922012/08/11 05:32:19

ポイント100pt

いまいちなにをどうしたいのかわかりません。
$rowの内容はどうなっていて、どのようにしたいのでしょうか。
mysqli_fetch_arrayの第二引数にMYSQLI_ASSOCを入れて結果をみて、今一度、作りたい配列を見直してみてはどうでしょう。

<?
function pr($var) {
	echo '<pre>'; print_r($var); echo '</pre>';
}

while ($row = mysqli_fetch_array($data, MYSQLI_ASSOC)){
	pr($row);
}



<?
function pr($var) {
	echo '<pre>'; print_r($var); echo '</pre>';
}

while ($row = mysqli_fetch_array($data)){
	$id = $row['id'];	
	$item = $row['item'];
	$name = $row['name'];
	$kensaku[$id][$item] = $name;
}
pr($kensaku);

これで確認すると希望する配列にはなっていないのですか?

他7件のコメントを見る
id:Cherenkov
<?php
$data = Array(
	'01' => Array(
		'-1' => 0,
		'0' => '田中',
		'1' => '北海道'
	)
);
foreach($data as $id => $val) {
	foreach($data[$id] as $i => $val2) {
		if ($i == '1' && $val2 == '北海道') {
			echo $i . $val2 . '<br>';
			echo $id; //01
		}
	}
}
2012/08/11 20:39:56
id:robopit

無事イメージどおりにできました。
ありがとうございました。

2012/08/12 03:34:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません