2014-10-02 2 views
-2

Предположим, что я есть 2 массива:PHP создать новый массив, добавив различные значения из существующих один

$array1 =([0] => Array ([user] => 'aaa' [count] => '123') 
      [1] => Array ([user] => 'bbb' [count] => '456') 
      [2] => Array ([user] => 'ccc' [count] => '789')); 

$array2= ([0] => aaa) 
      [1] => ccc); 

Я хотел бы искать значения из второго массива в первом массиве и создать третий массив, который будет содержать все элементы из первого массив, например:

$array3 =([0] => Array ([user] => 'aaa' [count] => '123') 
      [1] => Array ([user] => 'ccc' [count] => '789')); 

Пожалуйста, помогите. Спасибо заранее (простите за плохой английский)

+0

Что вы пробовали? Если вы еще ничего не пробовали, посмотрите на [array_filter] (http://php.net/manual/en/function.array-filter.php) –

+0

привет. Я попробовал 'foreach', но я основной пользователь php, который строит код только с примерами. Поэтому 'foreach' не работал для меня. – user3137740

ответ

0
$array1 = array(
    array('user' => 'aaa', 'count' => 123), 
    array('user' => 'bbb', 'count' => 456), 
    array('user' => 'ccc', 'count' => 789), 
); 

$array2 = array('aaa', 'ccc'); 

var_dump(array_filter($array1, function($el) use($array2) { 
    return in_array($el['user'], $array2); 
})); 

Он сохраняет ключи, вы можете сбросить их, если это необходимо. Или с foreach петлей

$out = array(); 

foreach($array1 as $el) 
{ 
    if (in_array($el['user'], $array2)) 
     $out[] = $el; 
} 

var_dump($out); 
+0

Большое вам спасибо! Просто испытал и работал как шарм! – user3137740

0

Можно попробовать использовать foreach(). Пример здесь ...

$array3 = array(); 
foreach($array2 as $search){ 
    foreach($array1 as $val){ 
     if($search == $val['user']){ 
      $array3[] = $val; 
     } 
    } 
} 
print_r($array3);