2012-02-18 10 views
-2

私は、この配列が生じています:配列をキーと値のペア配列に変換する方法は?

array(
    0 => array("name", "address", "city"), 
    1=> array("anoop", "palasis", "Indore"), 
    2=> array("ravinder", "annapurna", "Indore") 
) 

と私は、このように、この配列を作りたい:

array( 
    0 => array("name" = >"anoop" , "address" = >"palasia", "city" = >"Indore"), 
    1 => array("name" = >"ravinder" , "address" = >"annapurna", "city" = >"Indore") 
) 
+0

あなたがキーとして最初の要素内のアイテムを使用したい(あれば)ことをあなたの質問に明記してください。 –

+0

私はその配列をキーと値のペアにしたいです...助けてください。 –

答えて

4

使用array_combine$arrayは、あなたのデータが含まれている場合は、一般的な

$result = array(); 
$len = count($array); 
for($i=1;$i<$len; $i++){ 
    $result[] = array_combine($array[0], $array[$i]); 
} 
0

あなたはこの質問への回答をチェックし、CSVファイルを解析していると仮定するとで

$result = array(
      array_combine($array[0], $array[1]), 
      array_combine($array[0], $array[2]) 
     ); 

Get associative array from csv

+0

投票またはコメントを閉じる。それは答えることができません。[それは、私たちに旗を返すだけです。](http://meta.stackexchange.com/questions/95491/should-私たちの旗に答えているだけです。 –

+0

ありがとう、私は議論を読んだ。しかし、私は同意していないし、以前にOPで言及されていない*連想配列*の概念を参照する質問にリンクする際にいくつかの付加価値があると思う。 –

1

データが$arrayの場合:

$res = array(); 
foreach ($array as $key=>$value) { 
    if ($key == 0) { 
     continue; 
    } 
    for ($i = 0; $i < count($array[0]); $i++) { 
     $res[$array[0][$i]] = $value[$i]; 
    } 
} 

結果は$resになります。ここで

+0

-1内部 'for'ループだけでなく、外側の 'foreach'ループのすべての反復に対して' count() 'を実行するために-1。 –

+0

@Phoenix効率性はここでも重要ですか?真剣ですか? – Borealid

+1

これは悪い習慣です。 OPに表示される配列には2行の処理がありますが、ここでは配列が切り捨てられている可能性があります。実際には何千ものレコードを保持するかもしれません。あるいは、誰かがこの問題を解決しながら悪い習慣を拾いながらこの答えに出くわすかもしれません。 –

1

は、使用できる機能です。

function rewrap(Array $input){ 
    $key_names = array_shift($input); 
    $output = Array(); 
    foreach($input as $index => $inner_array){ 
     $output[] = array_combine($key_names,$inner_array); 
    } 
    return $output; 
} 
ここ

はデモンストレーションです:

// Include the function from above here 
$start = array(
    0 => array("name", "address", "city"), 
    1 => array("anoop", "palasis", "Indore"), 
    2 => array("ravinder", "annapurna", "Indore") 
); 
print_r(rewrap($start)); 

この出力は:

Array 
(
    [0] => Array 
     (
      [name] => anoop 
      [address] => palasis 
      [city] => Indore 
     ) 

    [1] => Array 
     (
      [name] => ravinder 
      [address] => annapurna 
      [city] => Indore 
     ) 

) 

注:あなたの最初の配列が定義されインデックス1が2回、私は2番目のoを変更しましたこのような2にね、:おそらくちょうどタイプミスだった

array(0 => array("name", "address", "city"), 1 => array("anoop", "palasis", "Indore"),2 => array("ravinder", "annapurna", "Indore")) 

1

近代的な方法は次のとおりです。あなたの場合は

$data = array_column($data, 'value', 'key'); 

$data = array_column($data, 1, 0); 
関連する問題