2017-03-21 22 views
0

私は1つの2次元配列に結合したい2つの配列を持っています。PHPで2次元配列を2次元配列から作成するには?

$firstnames = array("Jim", "Jack", "Mary", "Betty"); 

$lastnames = array("Brown", "Smith", "Hughes", "Malone"); 

は、私はエコー以降のPIDフィールドに対してチェックするために使用したい配列$bothnames['firstname']['lastname']を、したいです。

私は2次元配列を作成してエコーするために私が知っているすべてを試しました。

// populate 

$bothnames = array(); 

for ($i=0; $i<count($firstnames); $i++) 
{ 
    $bothnames[$i] = array(); 
     for ($x=0; $x<count($lastnames); $x++) 
     { 
      $bothnames[$i][$x] = $lastnames[$x]; 
     } 
} 


// echo 

for ($i=0; $i<count($firstnames); $i++) 
{ 
    for ($x=0; $x<count($lastnames); $x++) 
    { 
    echo $bothnames[$i][$x]; 
    echo "<br>"; 
    } 

    } 

これは姓(とループ4回)を与えます。後でこれらを使用して

<?php 
$firstnames = array("Jim", "Jack", "Mary", "Betty"); 
$lastnames = array("Brown", "Smith", "Hughes", "Malone"); 
$names = array(); 
$i = 0; 
foreach($firstnames as $fn) 
{ 
    $names[$fn] = $lastnames[$i]; 
    $i++; 
} 
echo "<pre>"; 
print_r($names); 

:どのように私はあなたが以下の方法を使用して配列を組み合わせることができ、出力に

Jim Brown 
Jack Smith 
etc. 

答えて

3

を得ることができます

foreach($names as $first => $last) 
{ 
    $firstName = $first; 
    $lastName = $last; 
} 

それはの長さということに留意すべきです両方の配列が同じである必要があります。

+0

より安全であることを確認されていない場合はありがとうを持っていることを確認している場合array_combine!それは素晴らしいですが、$ names [] []表記法で何らかの形でファーストネームとラストネームを別々にインデックスできますか?私は、後でSQLクエリを実行する必要があります。彼らは別のDBフィールドです。 – Benjamin

+0

はい、foreachループを使用してコードを更新することができます。姓と名を別々に取得することができます。 –

+1

申し訳ありませんが、私は持っていると思いました!完了しました。ありがとう。 – Benjamin

1

はあなたがPHPの配列のパワーを活用することを学ぶ必要があります

$firstnames = array("Jim", "Jack", "Mary", "Betty"); 
$lastnames = array("Brown", "Smith", "Hughes", "Malone"); 
$bothnames = array_combine($firstnames, $lastnames); 

foreach($bothnames as $key=>$value){ 
    echo $key." ".$value; 
    echo "<br/>"; 
} 
1

array_combine機能を使用してください。ここでは例です:

$firstnames = array("Jim", "Jack", "Mary", "Betty"); 
$lastnames = array("Brown", "Smith", "Hughes", "Malone"); 
$bothnames = array_map(function ($firstname, $lastname) { 
     return [$firstname,$lastname]; 
}, $firstnames, $lastnames); 

foreach ($bothnames as $fullname) { 
    echo $fullname[0]." ".$fullname[1]; 
} 

プリント:

ジム・ブラウン

ジャック・スミス

メアリー・ヒューズ

ベティ・マローン

array_map details

+0

リンクもありがとう。便利な機能!私は付け加えました。 "
";図のように印刷します。 – Benjamin

1

使用しますが、その配列が同じ長さ

$firstnames = ["Jim", "Jack", "Mary", "Betty"]; 
$lastnames = ["Brown", "Smith", "Hughes"]; 
$bothnames = array_combine($firstnames, $lastnames); 

foreach ($bothnames as $key => $value) { 
    echo $key . " " . $value; 
    echo "\n"; 
} 

か、このコードは

$firstnames = ["Jim", "Jack", "Mary", "Betty"]; 
$lastnames = ["Brown", "Smith", "Hughes", "Malone"]; 

foreach ($firstnames as $k => $v) { 
    echo $v . (isset($lastnames[$k]) ? ' ' . $lastnames[$k] : ''); 
    echo "\n"; 
}