2011-12-28 4 views
4

Дано:Использование массива ключей для создания нового массива

$data = array(
    "some" => "163", 
    "rand" => "630", 
    "om" => "43", 
    "words" => "924", 
    "as" => "4", 
    "keys" => "54" 
); 

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

$keys = array("some", "thing", "rand", "keys"); 

Я хотел бы вернуть массив с этими ключами в общем, создающими:

$arr = array(
    "some" => "163", 
    "rand" => "630", 
    "keys" => "54" 
); 

ответ

7

Вы можете сделать это с array_intersect_key() и array_flip():

$arr = array_intersect_key($data, array_flip($keys)); 

Результат:

 
Array 
(
    [some] => 163 
    [rand] => 630 
    [keys] => 54 
) 
0
$result = array_intersect_key($data, array_flip($keys)); 
1
$filteredArray = array_intersect_key($data, array_flip($keys)); 

является самым простым решением,

, но только по-другому:

$data = array(
    "some" => "163", 
    "rand" => "630", 
    "om" => "43", 
    "words" => "924", 
    "as" => "4", 
    "keys" => "54" 
); 

$keys = array("some", "thing", "rand", "keys"); 

$filteredArray = array_filter($data,function($item) use (&$data,$keys) { $retVal = false; if (in_array(key($data),$keys)) $retVal = true; next($data); return $retVal; }); 

var_dump($filteredArray); 
Смежные вопросы