2016-11-29 12 views
3

私は2つのアレイPHP - 2つの配列

  1. ますprint_r($ valの)を持っているに参加する方法。

  2. print_r($ results);

この2つの配列をPERSONAL ID(例:array1)で結合する必要があります。 123456を配列2にコピーします。 123456、654321また

をarray2のために654321をARRAY1アレイ1:

Array (
[1] => Array 
    (
     [0] => test1 
     [1] => 123456 
    ) 

[2] => Array 
    (
     [0] => test2 
     [1] => 654321 
    ) 
) 

アレイ2:

Array (
[5] => Array 
    (
     [login] => 123456 
     [firstname] => George 
     [lastname] => George 
    ) 

[8] => Array 
    (
     [personal_id] => 654321 
     [firstname] => John 
     [lastname] => John 
    ) 

は、どのように私はこの2つの配列を結合することができますか?

ありがとうございました

+0

...ループを実行し、手動でそれを作る(http://stackoverflow.com/questions/6535444/combine-two-arrays) –

+0

[二つの配列を結合] –

+0

@MasivuyeCokileの可能性のある重複した、この質問重複しているものと一致しません。 –

答えて

1

お試しください。

$new_Array = array(); 
foreach ($val as $key => $v) {   
    foreach ($results as $r) { 
     if($v[1] == $r['login']){ 
      $new_Array[$key]['login'] = $r['login']; 
      $new_Array[$key]['firstname'] = $r['firstname']; 
      $new_Array[$key]['lastname'] = $r['lastname']; 
      $new_Array[$key]['test'] = $v[0]; 
     } 
    } 
} 
print_r($new_Array); 
+0

それはうまく動作します、ありがとう! –

1
$firstArray = [ 
     1 => [ 
       0 => 'test1', 
       1 => '123456', 
      ], 
     2 => [ 
       0 => 'test2', 
       1 => '654321', 
      ]  
     ]; 

// move index to keys to avoid second-dimension foreach in future 
    $idxCachedArray = []; 
    foreach ($firstArray as $item) { 
     $idxCachedArray[$item[1]] = $item; 
     unset ($idxCachedArray[$item[1]][1]); 
    } 

    $secondArray = [ 
     5 => [ 
       'login' => 123456, 
       'firstname' => 'George', 
       'lastname' => 'George', 
      ], 
     8 => [ 
       'login' => 654321, 
       'firstname' => 'John', 
       'lastname' => 'John', 
      ], 
     ]; 

    $resultArray = []; 
    foreach ($secondArray as $key => $item) { 
     $resultArray[$key] = $item; 
     if (isset($idxCachedArray[$item['login']])) { 
      $resultArray[$key] = array_merge($resultArray[$key], $idxCachedArray[$item['login']]); 
     } 
    } 

    var_dump ($resultArray); 
1

はあなたがはっきりあなたの出力をしないでいる

$arr1 = [ 
    ['test', '123'], 
    ['test2', '345'] 
]; 

$arr2 = [ 
    [ 
    'login' => '123', 
    'first' => 'asddf' 
    ], [ 
    'login' => '345', 
    'first' => 'def' 
    ] 
]; 

$mergedArray = []; 
foreach ($arr1 as $elem) { 
    $login = $elem[1]; 
    $match = null; 
    foreach ($arr2 as $elem2) { 
    if ($elem2['login'] == $login) { 
     $match = $elem2; 
    } 
    } 

    $mergedArray[] = array_merge($elem, $match); 
} 

print_r($mergedArray); 
1

はこのような何かをしようと、この種のいくつかのこと...

$val = array (
     '1' => array(
       '0' => 'test1', 
       '1' => '123456', 
     ), 

     '2' => array(
       '0' => 'test2', 
       '1' => '654321', 
      ) 
    ); 
    $results = array (
     '5' => array 
      (
       'login' => '123456', 
       'firstname' => 'George', 
       'lastname' => 'George', 
      ), 

     '8' => array(
       'personal_id' => '654321', 
       'firstname' => 'John', 
       'lastname' => 'John', 
      ) 
    ); 

    foreach ($val as $key => $value) { 
     $val = $value['1']; 
     foreach ($results as $key1 => $value1) { 
      if ($value1['login'] == $val) { 
       $output = array_merge($value,$value1); 
      } elseif ($value1['personal_id'] == $val) { 
       $output2 = array_merge($value,$value1); 
      } 
     } 
    } 
    echo "<pre>"; 
    print_r(array_unique($output)); 
    echo "<pre>"; 
    print_r(array_unique($output2)); 
0

を行うことができ、あなたを想定期待される出力は次のようになります。

array(2) { 
    [123456]=> 
    array(4) { 
    ["firstname"]=> 
    string(6) "George" 
    ["lastname"]=> 
    string(6) "George" 
    ["personal_id"]=> 
    int(123456) 
    [0]=> 
    string(5) "test1" 
    } 
    [654321]=> 
    array(4) { 
    ["firstname"]=> 
    string(4) "John" 
    ["lastname"]=> 
    string(4) "John" 
    ["personal_id"]=> 
    int(654321) 
    [0]=> 
    string(5) "test2" 
    } 
} 

ここにはコードがあり、demoが役立ちます。

<?php 
    $val = array (
      '1' => array(
        '0' => 'test1', 
        '1' => '123456', 
      ), 

      '2' => array(
        '0' => 'test2', 
        '1' => '654321', 
       ) 
     ); 
     $results = array (
      '5' => array 
       (
        'login' => '123456', 
        'firstname' => 'George', 
        'lastname' => 'George', 
       ), 

      '8' => array(
        'personal_id' => '654321', 
        'firstname' => 'John', 
        'lastname' => 'John', 
       ) 
     ); 



    /* 
     $indexOfPrimarykey is the nth of index as the specify id, to make it more universely, I used index. 
     You array is just the first and the last index, here also can use 
     reset($array); $first_key = key($array); to get the first key, 
     and 
     end($array); $last_key = key($array); to get the last key. 
    */ 
    function mergeArray($array, $indexOfPrimarykey) 
    { 
     $o = []; 
     array_walk($array, function($v) use($indexOfPrimarykey, &$o) 
     { 
     $keys = array_keys($v); 
     $k = $keys[$indexOfPrimarykey]; 
     $value = $v[$k]; 
     unset($v[$k]); 
     $o[$value] = $v; 
     }); 
     return $o; 
    } 
    $val = mergeArray($val,1); 
    $results = mergeArray($results,0); 
    array_walk($val, function($v, $k) use(&$results) 
    { 
     $results[$k] += ['personal_id' => $k] + $v; 
    }); 
    var_dump($results);