3

私はこのような配列データを持っています:

Array (
    [0] => Array (
        [0] => Name:
        [1] => John W.
        [2] => Registration ID:
        [3] => 36
    ) 
    [1] => Array (
        [0] =>Age:
        [1] => 35
        [2] => Height:
        [3] => 5'11"
    ) 
    [3] => Array (
        [0] => Sex:
        [1] => M
        [2] => Weight:
        [3] => 200lbs
    )
    [4] => Array (
        [0] => Address
    )
    [5] => Array (
        [0] => 6824 crestwood dr delphi, IN 46923
    ))

そして、私はそれを次のような連想配列に変換したいと思います:

Array(
    ['Name']=> John W.
    ['Registration ID']=> 36
    ['Age']=> 35
    ['Height'] => 5'11''
    ['Sex']=>M
    ['Weight']=>200lbs
    ['Address']=>6824 crestwood dr delphi, IN 46923
)

配列の列ヘッダーと思われるものも順番に並んでいたので、どうすればいいのか全くわかりません。そのため、この配列を変換するのは困難です。

私が感謝するどんな助けでも、thx。

4

2 に答える 2

2

オリジン配列がと呼ばれる$origin場合、次のように実行できます。

$merged = array();
foreach($origin as $val) {
   $merged = array_merge($merged, $val);
}
$tot = count($merged) - 1;
for ($i=0;$i<$tot;$i+=2) {
   $result[$merged[$i]] = $merged[$i+1];
}

var_dump($result); // To test the resulting array

最初にarray_merge()、配列を1つの次元/深さだけに平坦化するために使用する$originので、後でそれを反復し(反復ごとに各2項目をステップ実行)、結果の配列に項目の各ペア($iおよび)を割り当てます。$i+1

于 2012-11-09T04:32:37.787 に答える
1

最初の3つの子については、前の要素に偶数の値をキーとして割り当てることができるようです。次に、4番目のものを5番目の要素のキーとして割り当てます。

   $result = array();
   foreach ($array as $key => $value)
   {
       if ($key < 4) {
             $elements = array_values($value);
             $result[$elements[0]] = $elements[1];
             $result[$elements[2]] = $elements[3];
        }

        if ($key == 4)
             $fifthkey = $value;

         if ($key == 5)
             $result[$fifthkey] = $value;
    }

また、高さの文字列の引用符をエスケープする必要があることに注意してください。

于 2012-11-09T04:43:45.417 に答える