2017-02-25 58 views
1
<?php 

$ar = Array (

    [0] => Array ([id] => 1 [social_id] => [role_id] => 0 [name] => [first_name] => Jimmy [last_name] => rathore [gender] => male [dob] => 06-02-1992 [language] => english [location] => xyz [address] => xyz [email] => [email protected] [phone] =>) 


    [1] => Array ([id] => 3 [social_id] => [role_id] => 0 [name] => [first_name] => Dev [last_name] => Smith [gender] => [dob] => [language] => [location] => xyz [address] => xyz [email] => [email protected] [phone] => 7838344344) 

     [2] => Array ([id] => 4 [social_id] => [role_id] => 0 [name] => [first_name] => Col [last_name] => Manon [gender] => male [dob] => 02-02-2017 [language] => english [location] => London [address] => ABCD [email] => [email protected] [phone] => 7894561230) 
     ) ; 


$array = Array (

    [0] => Array ([id] => 1 [sm_id] => 1 [field_name] => first_name [value] => G2 [created_at] => 2017-02-24 11:05:03 [updated_at] => 2017-02-24 11:05:03 [deleted_at] =>) 
); 

$arr = array(); 

foreach($row=0; $row<count($ar); $row++){ 
    foreach($col=0; $col<count($array); $col++){ 
     if($ar['0']['id'] == $array['0']['id']){ 
      $arr['first_name'] = $ar['0']['first_name']; 
      $arr['last_name'] = $ar['0']['last_name']; 
      $arr['email'] = $ar['0']['email']; 
      $arr['phone'] = $ar['0']['phone']; 
     } 
    } 
} 

print_r($arr);die; 

?> 

我想從一個陣列到另一陣列基於$ AR映射數據[0] [「ID ']與$陣列[' 0 '] [' SM_ID']陣列未定義,用PHP偏移

如果$ ar的id與$ array的sm_id匹配,用它的值推送到一個數組,我怎麼能達到同樣的效果。請建議

Expected result 

Array([id] => 1 [first_name] => Jimmy [last_name] => rathore [gender] => male [dob] => 06-02-1992 [language] => english [location] => xyz [address] => xyz [email] => [email protected] [phone] =>); 
+0

我不明白你的要求。請提供預期的輸出。 – trincot

+0

現在看trincot –

回答

1

你可以不喜歡這樣,因爲原始數組是$ar,並與sm_id$array數組:

// Create a hash of all sm_id values to be found 
$ids = array_flip(array_column($array, "sm_id")); 

// filter the original array to get only those with an id value in that hash 
$arr = array_filter($ar, function ($row) use ($ids) { 
    return isset($ids[$row["id"]]); 
}); 

print_r ($arr);