2016-12-19 14 views
-2

こんにちは私はこのような配列を持っています。foreachループで配列を変換する

$myarray = Array(
[0] => Array 
    (
     [0] => Type 
     [1] => Brand 
    ) 

[1] => Array 
    (
     [0] => Car 
     [1] => Toyota 
    ) 

) 

このような結果が欲しいです。

タイプ=カー

ブランド=トヨタ

だから、最初の配列「0」の値からその平均値が二番目の配列「0」の値から、その後のエコーになりますが表示されます。

Then From最初の配列 "1"の値が2番目の配列 "1"から表示されます。値が表示されます。

また、どのくらいの配列が来るのかわかりませんので、動的である必要があります。

お願いします。この

$myarray = [ 
    ['Type', 'Brand'], 
    ['Car', 'Toyota'] 
]; 

list($fields, $values) = $myarray; 

$output = array_combine($fields, $values); 

echo json_encode($output, JSON_PRETTY_PRINT); 

// { 
//  "Type": "Car", 
//  "Brand": "Toyota" 
// } 

ため

foreach($myarray[0] as $titleKey=>$title) { 
    echo $title . " = "; 
    for($i = 1;$i<count($myarray);$i++) { 
     echo $myarray[$i][$titleKey] . ","; 
    } 
    echo "</br>"; 
} 
+0

「$ myarray [0] [2]」はどうですか?何を達成しようとしているのか理解しよう。 ** car **と** brand **は次の配列値とペアになるのですか? – weirdo

答えて

1

あなたはこの(!今私はそれをテストしている)のような何かを試すことができますトヨタ、このようにする必要があります。

$myarray = [ 
    ['Type', 'Brand'], 
    ['Car', 'Toyota'], 
    ['Horse', 'Seabiscuit'] 
]; 

function first ($xs) { return $xs[0]; } 
function rest ($xs) { return array_slice($xs, 1); } 

$output = array_map(function ($values) use ($myarray) { 
    return array_combine(first($myarray), $values); 
}, rest($myarray)); 

echo json_encode($output, JSON_PRETTY_PRINT); 

// [ 
//  { 
//   "Type": "Car", 
//   "Brand": "Toyota" 
//  }, 
//  { 
//   "Type": "Horse", 
//   "Brand": "Seabiscuit" 
//  } 
// ] 

最初の配列にはフィールド名が含まれ、残りの配列には値があります

もちろん、これはもっと多くのフィールドが追加されたときにも機能します。コードを変更する必要はありません。

$myarray = [ 
    ['Type', 'Brand', 'Origin'], 
    ['Car', 'Toyota', 'Japan'], 
    ['Horse', 'Seabiscuit', 'Kentucky'] 
]; 

function first ($xs) { return $xs[0]; } 
function rest ($xs) { return array_slice($xs, 1); } 

$output = array_map(function ($values) use ($myarray) { 
    return array_combine(first($myarray), $values); 
}, rest($myarray)); 

echo json_encode($output, JSON_PRETTY_PRINT); 

// [ 
//  { 
//   "Type": "Car", 
//   "Brand": "Toyota", 
//   "Origin": "Japan" 
//  }, 
//  { 
//   "Type": "Horse", 
//   "Brand": "Seabiscuit", 
//   "Origin": "Kentucky" 
//  } 
// ] 
+0

助けてくれてありがとう。 –

+0

ああ、['array_combine'](http://php.net/manual/en/function.array-combine.php)のマニュアルバージョンです。ああ、親愛なるPHP ... – naomik

0

使用array_combineしかし、あなたが言ったように、それはちょうどより多くの値を持つことができます:

関連する問題