1

私は次の2つのことを持っています:

  1. 投稿されたデータを含む $_POST 配列
  2. 目的のデータ配列内の各パラメーターのパスを含む $params 配列。

    $_POST = array(
    'name'      => 'Marcus',
    'published' => 'Today',
    'url'       => 'http:://example.com',
    'layout'    => 'Some info...',
    );
    
    $params = array(
    'name'      => 'Invoice.name',
    'published' => 'Page.published',
    'url'       => 'Page.Data.url',
    'layout'    => 'Page.Data.layout',
    );
    

以下の例のような $data 配列を生成したいと思います。どうやってやるの? $params 配列の「パス」を使用して、データ配列のキーを作成し、$_POST 配列のデータを格納する方法に注目してください。

$data = array(
    'User' => array(
        'name' => 'Marcus',
    ),
    'Page' => array(
        'published' => 'Today',
        'Data' => array(
            'url' => 'http:://example.com',
            'layout' => 'Some info...',
        ),
    ),
);
4

1 に答える 1

0

参照変数を使用します。

$post = array( // I renamed it
  'name'      => 'Marcus',
  'published' => 'Today',
  'url'       => 'http:://example.com',
  'layout'    => 'Some info...',
);

$params = array(
  'name'      => 'Invoice.name',
  'published' => 'Page.published',
  'url'       => 'Page.Data.url',
  'layout'    => 'Page.Data.layout',
  );

echo '<pre>'; // just for var_dump()
foreach($post as $key=>$var){ // take each $_POST variable
  $param=$params[$key]; // take the scheme fields
  $path=explode('.',$param); // take scheme fields as an array
  $temp=array(); // temporary array to manipulate
  $temp_original=&$temp; // we need this the same as we're going to "forget" temp
  foreach($path as $pathvar){ // take each scheme fields
    $temp=&$temp[$pathvar]; // go deeper
    }
  $temp=$var; // that was the last one, insert it
  var_dump($temp_original); // analize carefully the output
}

今あなたがしなければならないのは、それらをすべて結合することだけです。それらはまさにあなたが望むものではありませんが、これは簡単です.

$temp_originalそして、各フィールドが$post変数データを指していることに注意してください! (&stringの代わりにstring)。何らかの形でクローンしたい場合があります。

于 2013-03-11T14:30:40.150 に答える