0

各配列の各値が person のような新しい配列に追加される必要があります。

<div class="person">
    <input name="name[]">
    <input name="type[]">
</div>
<div class="person">
    <input name="name[]">
    <input name="type[]">
</div>

2人でも10人でもなんとダイナミック。

$_POST の戻り値:

Array( [name] => Array([0] => oliver [1] => tom) [type] => Array([0] => developer [1] => designer) )

二人が離れているようなものが欲しいのですが、試してみませんでした:

$person1 = array(
"name" => "oliver"
"type" => "developer"
)

$person2 = array(
"name" => "tom"
"type" => "designer"
)
4

4 に答える 4

2
$arr['name'] = $_POST['name'];
$arr['type'] = $_POST['type'];

array_unshift($arr, null);
print_r(call_user_func_array('array_map', $arr));

出力:

Array
(
    [0] => Array
        (
            [0] => Oliver
            [1] => developer
        )

    [1] => Array
        (
            [0] => Tom
            [1] => designer
        )

)
于 2013-07-23T00:43:14.323 に答える
0

次のことを試してください。

$people = array(); // define new array

// first loop to find the minimal size array - this will prevent errors down the road.
$minIndex = 0;
foreach($_POST as $key=>$value)
    if(is_array($value)){
        $currentSize = sizeof($value); // get the current data array length
        if(($minIndex==0) || ($minIndex > $currentSize))
            $minIndex = $currentSize; // finds the minimus array length
    }

//populate the $people array
for($i = 0; $i < $minIndex; $i++){ // loop until $minIndex to prevent errors
    $current = array(); // this is the current person
    foreach($_POST as $key=>$value) // loop through all $_POST arrays
        if(is_array($value)) // only if this is an array
            $current[$key] = $value[$i]; // add the current data to the current person

    array_push($people,$current);
}

print_r($people); // print all people

あなたの例では、これは印刷されます:

Array(
    [0] => Array([name] => oliver [type] => developer) 
    [1] => Array([name] => tom [type] => designer)
)

したがって、次のように個人の詳細に到達できます: $people[0]['name']$people[0]['type']など..

于 2013-07-23T00:01:48.340 に答える