質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

2回答

3926閲覧

PHPのPOSTで配列を受け取るときに階層にしたい

ckaposndbbba

総合スコア210

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2015/05/03 05:14

こんにちは.
今,こんなふうに値を受け取っています.

lang

1<?php 2$items = (!empty($_POST['item']) ? $_POST['item'] : array(); 3if(!empty($items)) { 4 var_dump($items); 5} 6?> 7 8<script> 9// jQuery読み込みは割合 10$(function(){ 11 $("#add-item").click(function(){ 12 $("#items").append(/* フォーム */); 13 }); 14}); 15</script> 16 17<form action="" method="POST" id="items"> 18 <input type="text" name="item[]"> 19 <input type="text" name="item[]"> 20 <hr> 21 <input type="text" name="item[]"> 22 <input type="text" name="item[]"> 23 <hr> 24 <input type="text" name="item[]"> 25 <input type="text" name="item[]"> 26 <hr> 27</form> 28<span id="add-item">項目を追加</span>

このように,項目をたくさん追加できるようにしたのですが,
見ての通り,2つセットになっていますよね.
しかし,返り値は

lang

1array( 2 0 => 'きつねうどん', 3 1 => 'うどん', 4 2 => 'たぬきうどん', 5 3 => 'うどん', 6 4 => 'ひやむぎ', 7 5 => 'そうめん', 8 6 => 'つけめん', 9 7 => 'ラーメン' 10)

などとなっているわけです.
これを,

lang

1array( 2 0 => array( 3 0 => 'きつねうどん', 4 1 => 'うどん' 5 ), 6 1 => array( 7 0 => 'たぬきうどん', 8 1 => 'うどん' 9 ), 10 // 以下省略

と,2こずつ分けることはできないでしょうか.
よろしくおねがいします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

array_chunk関数で一発です。PHPには便利な標準関数がたくさんあります。
PHP: array_chunk - Manual

lang

1$array = array( 2 'きつねうどん', 3 'うどん', 4 'たぬきうどん', 5 'うどん', 6 'ひやむぎ', 7 'そうめん', 8 'つけめん', 9 'ラーメン', 10); 11 12print_r($array); 13 14$new_array = array_chunk($array, 2); 15 16print_r($new_array);

lang

1Array 2( 3 [0] => きつねうどん 4 [1] => うどん 5 [2] => たぬきうどん 6 [3] => うどん 7 [4] => ひやむぎ 8 [5] => そうめん 9 [6] => つけめん 10 [7] => ラーメン 11) 12Array 13( 14 [0] => Array 15 ( 16 [0] => きつねうどん 17 [1] => うどん 18 ) 19 20 [1] => Array 21 ( 22 [0] => たぬきうどん 23 [1] => うどん 24 ) 25 26 [2] => Array 27 ( 28 [0] => ひやむぎ 29 [1] => そうめん 30 ) 31 32 [3] => Array 33 ( 34 [0] => つけめん 35 [1] => ラーメン 36 ) 37 38)

ただ、今後フォームを拡張する可能性なども考えると、re-24さんの回答のようにフォームを変更した方が良いと考えます。

投稿2015/05/03 07:01

編集2015/05/03 07:03
sounisi5011

総合スコア697

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんなかんじで項目を追加していってはどうでしょう?

<form action="" method="POST" id="items"> <input type="text" name="item[0][]"> <input type="text" name="item[0][]"> <hr> <input type="text" name="item[1][]"> <input type="text" name="item[1][]"> <hr> <input type="text" name="item[2][]"> <input type="text" name="item[2][]"> <hr> </form>

投稿2015/05/03 05:43

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問