PHP配列の要素をキーと値に分ける方法

このQ&Aのポイント
  • PHPの配列をvar_dumpすると、キーと値の表示形式がarray(キー=>値)となります。
  • この表示形式を[キー][値]の形に変える方法がありますか?
  • ご教示願います。
回答を見る
  • ベストアンサー

PHP 配列

多重の質問申し訳ございません。現在配列をvar_dumpすると array(3) { [0]=> string(32) "hogehoge" [1]=> string(32) "pipyup4646" [2]=> string(9) "1000%" } array(3) { [0]=> string(32) "testtest" [1]=> string(32) "kodsaf45454” [2]=> string(9) "500%" } prinfをしましたら出力結果が array(英語,英数字,値); という形になっているみたいです。 これを[英語][英数字] = 値というのは可能でしょうか? 宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5081/13277)
回答No.2

配列の構造を変換するなら ========== $oldArray = array(  array("hogehoge", "pipyup4646", "1000%"),  array("testtest", "kodsaf45454", "500%"), ); $newArray = array(); foreach($oldArray as $tmp) {  $newArray[$tmp[0]][$tmp[1]] = $tmp[2]; } ========== って感じですかね。 元の配列を作っている所が改変できるなら、入れる時点で変えてしまえばいいんじゃないでしょうか。

losloson
質問者

お礼

理解するのに時間がかかりそうですね汗 ありがとうございます!試させていただきます!

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5081/13277)
回答No.1

配列の構造を変えたいと言う事ですか? それとも画面への出力を「[英語][英数字] = 値」にしたいと言う事ですか?

losloson
質問者

補足

配列の構造を変えたいです。[key][key] = [value]のような、、 上手く説明できなくてすいません

関連するQ&A

  • PHP 配列 変換

    失礼します現在配列をvar_dumpすると array(3) { [0]=> string(32) "hogehoge" [1]=> string(32) "pipyup4646" [2]=> string(9) "1000%" } array(3) { [0]=> string(32) "testtest" [1]=> string(32) "kodsaf45454” [2]=> string(9) "500%" } array(3) { [0]=> string(32) "ldkfaofpjdsa" [1]=> string(32) "fasdfasdfaf4546" [2]=> string(9) "50000%" } となっておりこれを[0][1] = [2] のように[英語][英数字] = 値のようにしたいです。 ご教授いただけると助かります。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • [PHP]ループ内の配列取得、表示について

    質問させていただきます。 データをDBから取得しwhileで全てのデータを配列として出力しているとします。 (whileの中で出力し、3つのデータがあるため3回ループされている) 結果 array(1) { [0]=> string(5) "17:10" } array(2) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" } array(3) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" [2]=> string(5) "11:15" } 現在の出力内容は、 var_dump[$hoge[0]] 出力結果 string(5) "17:10" string(5) "17:10" string(5) "17:10" var_dump[$hoge[1]] 出力結果 NULL string(5) "17:25" string(5) "17:25" var_dump[$hoge[2]] 出力結果 NULL NULL string(5) "11:15" という出力になっていますが、最後のarray(3)の部分だけを抜き出したいです。 その場合はどのようにすればよいのでしょうか? -理想の結果- 利用したいのはarray(3)の部分だけ。 var_dump[$hoge[0]] "17:10" var_dump[$hoge[1]] "17:25" var_dump[$hoge[2]] "11:15" 説明不足かもしれませんが、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • [php]mysqlデータ配列取得について

    お世話になります。検索しても中々辿り着けなかったので質問させていただきます。 途中から //mysqlより全データ検索 $result = mysql_query('SELECT id FROM hoge ORDER BY id'); //添字配列として全データ取得   while($row = mysql_fetch_row($result)){ //ここの処理で$rowの配列を一行の配列として足していきたい。 var_dump($row); print('<br />');   } 現在の出力内容は array(1) { [0]=> string(1) "5" } array(1) { [0]=> string(1) "6" } array(1) { [0]=> string(1) "7" } array(1) { [0]=> string(1) "8" } こうした形で出力されます。 理想の出力内容は各arrayを足して、 array(4) { [0]=> string(1) "5" [1]=> string(1) "6" [2]=> string(1) "7" [3]=> string(1) "8"} 一行として出力したいのですが、一向にできる気配がありません。 初歩的なものだと思いますが、とても困ってます。何卒よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • PHPの配列の扱い方

    配列を勉強中なのですが、 よく判らなくなってしまったので教えてください。 print var_dump($aa); を実行すると array(5) { [0]=> string(2) "AE" [2]=> string(1) "C" [4]=> string(1) "F" [5]=> string(1) "N" [6]=> string(1) "Y" } とか array(2) { [27]=> string(2) "BA" [41]=> string(2) "BP" } とかかえってくる配列$aaがあるのですが、 この"AE"や"C"や"BP"など文字情報だけを見たい場合はどのように表記すればいいのでしょうか?

    • ベストアンサー
    • PHP
  • 【PHP】配列に出てくるこの名称はなんですか?

    PHP初心者です。 専門用語について教えてください。 $myAr[0] = 'あ'; $myAr[1] = 'い'; var_dump($myAr); としたとき、 array(2) { [0]=> string(3) "あ" [1]=> string(3) "い" } と出力されると思いますが、この[0][1]の「名称」は何でしょう? 意味はわかりますが呼び名がわからずすっきりしません。 キーじゃないですしね。 お詳しい方、よろしくお願いいたします。

    • 締切済み
    • PHP
  • 連想配列 PHP 上書き

    失礼します あるkeyに対して配列の要素を追加したいのですが 上書きされてしまいます。 例えば array(1) { ["hogehoge"]=> string(8) "piyopiyo" } array(1) { ["hogehoge"]=> string(8) "tekoteko" } をあるkey array(3) { ["key"]=> array(24) { ["hogehoge"] => "piyopiyo" ["hogehoge"] => "tekoteko" のような感じで追加していきたいです。 ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • preg_match_all、余計な文字を消したい

    $source = "(・・・数千文字あるので省略します)" $data = '/<td class="c">\s*.*\s*<\/td>|<td>.*<\/td>/'; preg_match_all($data, $source, $data_matches); var_dump($data_matches); 上記、var_dumpの出力内容は(何故か二次元配列になってしまうんですが)、 array(1) { [0]=> array(80) { [0]=> string(72) "<td class="c"> hogehoge </td>" [1]=> string(21) "<td class="c">hogehoge</td>" [2]=> string(27) "<td>hogehoge</td>" [3]=> string(9) "<td>hogehoge</td>" [4]=> string(21) "<td class="c">hogehoge</td>" [5]=> string(9) "<td>hogehoge</td>" 上記の様に、欲しかったhogehogeの情報は取れているんですが、 <td class="c"></td>、<td></td>が邪魔です。。。 '/<td class="c">\s*.*\s*<\/td>|<td>.*<\/td>/'; 上記の正規表現は、hogehogeの場所を突き止めるのに必要だと思うんですが、 hogehogeのみ抽出したくて・・・。 $re = str_replace('<td class="c">', "", $data_matches); var_dump($re); 例えば上記の様にしても、<td class="c">が消えてくれません。。。 質問 1、何故、二次元配列になってしまうんでしょうか?問題ないのでしょうか?出来れば普通の配列にしたいんですが・・・。 2、どうすればhogehogeの場所を突き止め、そしてさらにhogehogeのみの情報を抽出出来るでしょうか?

    • 締切済み
    • PHP
  • [PHP]配列におけるインデックスの考え方

    $scores = [10, 50, 30, 20]と言った配列があるとします。 配列内の10の値を取りだそうとすれば print $scores[0]; とすればブラウザに10の値が表示されます。 というか、配列というのは、[0][1][2][3]…と数えるものだと思っていました。 今、array_fill()関数について学習しています。 $prices = array_fill(0, 5, 10); としてprint_rで出力すると Array ( [0] => 10 [1] => 10 [2] => 10 [3] => 10 [4] => 10 ) と自分で理解できる範囲の結果が表示されます。 ところが、 $prices = array_fill(-2, 5, 10); をprint_rで出力すると以下のように返ってきます。 Array ( [-2] => 10 [0] => 10 [1] => 10 [2] => 10 [3] => 10 ) 単純に考えると、以下のように返ってこないのはなぜなのでしょうか? Array ( [-2] => 10 [-1] => 10 [0] => 10 [1] => 10 [2] => 10 ) また $prices = array_fill(5, 5, 10); と記述すると、 Array ( [5] => 10 [6] => 10 [7] => 10 [8] => 10 [9] => 10 ) と返ってきます。 配列のインデックス、添字を名前や商品名にして連想配列が出来るのはわかります。 (1)マイナス値からはじめた場合、なぜ[-2][-1][0]…のように返ってこないのはなぜでしょうか? (2)配列の添え字、インデックスが、[5]ではじまり[6][7][9][10]…とすることに 何か意味があるのでしょうか? $prices = [10, 10, 10, 10, 10]のような記述があった場合、初学者には[0]からはじまっているからこそ array_spliceなどでキー名がわからずとも、配列を操作を容易にできるのではないかと思ってしまいます。 上記2点、配列内でのマイナス値の扱い方、配列の添字が[0]以外からはじまる理由がよくわかりません。 分かる方いらっしゃいましたら教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの再帰関数について

    下記のように関数を作りましたが、思うような結果が出ません。 function saiki($array){ if(count($array) === 1){ return $array; } else { array_pop($array); saiki($array); } } var_dump(saiki(array('いちご', 'みかん', 'りんご', 'すいか'))); /* 欲しい結果 /* array(1) { /* [0]=> /* string(9) "いちご" /* } /* /* /* 実際の結果 /* array(4) { /* [0]=> /* string(9) "いちご" /* [1]=> /* string(9) "みかん" /* [2]=> /* string(9) "りんご" /* [3]=> /* string(9) "すいか" /* } count($array) が 1 じゃなければ array_pop($array) した配列を引数として、再帰的に saiki($array) しているつもりなのですが。。。 array_pop($array) じゃなく unset($array[count($array) - 1]) みたいなことをしても結果は一緒でした。 どうすれば欲しい結果がとれるか(count($array) が 1 以外なら再帰的に繰り返す)、どなたかご教授ください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列から特定の語を含むものだけを取り出したいです

    var_dump($text); を実行すると array(XX) { [0]=> string(YY) "りんご食べたい。" [1]=> string(YY) "イタリアン食べたい。" [2]=> string(YY) "ごりら見た。" [3]=> string(YY) "雪まつりに行きたい。" [4]=> string(YY) "うさぎ可愛い!!" } という配列があり、そこから $key = array("りんご","ばなな","ごりら","うさぎ"); の単語を含む文章だけ取り出したいです。 以前も同じような質問をし、アンサーをいただき、このように試したのですが、 $key_text = array(); foreach($text as $v1){ foreach($key as $v2){ if(strpos($v1[0], $v2) !== false){ $key_text[] = $v1[0]; } } } var_dump($key_text); array(0) { } と返ってきてしまいます。どこが間違っているか教えて下さい。お願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう