1

フォームを送信した後、配列POSTがあります。

$POST = Array
(
    [29#487_Mon] => 90,
    [29#487_Mon_power] => 50,
    [30#487_Thur]=>80,
    [30#487_Thur_power]=>90,
    [41#487_Wed]=>10,
    [41#487_Wed_power]=>20,

)

そして、私が欲しいのは、$POST配列を次のようなよりわかりやすい形式に変換することです。

$Transform = array(
    [29]=>array(
            [487_Mon] => 90,
            [487_Mon_power] => 50
            ),
    [30]=>array(
            [487_Thur]=>80,
            [487_Thur_power]=>90
            ),
    [41]=>array(
            [487_Wed]=>10,
            [487_Wed_power]=>20
            )
    )

誰もがこれを行う方法を知っていますか?

4

2 に答える 2

4

コメントで@Gordonが指摘しているように、さらに、次の方法でそれを行うことができます。

<?php
$Transform = array();
foreach($POST as $key => $val){
 $key_parts = explode("#", $key); //spliting 29#487_Mon to 29 and 487_Mon
 /*
 $key_parts[0] = 29
 $key_parts[1] = 487_Mon
 */
 $Transform[$key_parts[0]][$key_parts[1]] = $val;
}
echo  '<pre>';
print_r($Transform);
echo  '</pre>';
?>

デモを見る

于 2013-01-28T11:16:37.267 に答える
2

これは@Gordonが言ったことを拡張しています。@Gordonがコメントを回答として送信したい場合は、回答を撤回します。

テストされ、動作します

<?
    if( $_POST['submit'] ) {
        echo "<pre>";
        print_r( $_POST );
        echo "</pre>";
    }
?>

<form action="" method="post">
    <input type="text" name="29[487_Mon]"/>
    <input type="text" name="29[487_Mon_power]"/>
    <br/><br/>
    <input type="text" name="30[487_Thur]"/>
    <input type="text" name="30[487_Thur_power]"/>
    <br/><br/>
    <input type="text" name="41[487_Wed]"/>
    <input type="text" name="41[487_Wed_power]"/>
    <br/><br/>

    <input type="submit" name="submit" />
</form>
于 2013-01-28T11:21:29.670 に答える