天天看點

php 數組 子集,在PHP中,有沒有辦法獲得一個數組的子集,其鍵與另一個數組中的值比對?...

目前,我正在使用此函數擷取訓示從數組中收集存儲為另一個數組中的值的鍵數組的鍵/值:

function get_indicies($haystack,$needle_names = array()){

$needles = array();

foreach($needle_names as $needle_name){

if( isset($haystack[$needle_name]) ) $needles[$needle_name] = $haystack[$needle_name];

}

return $needles;

}

php中有大量的數組函數,有沒有一種方法可以在類範圍内更有效地執行此操作,并且可以使用更多内置的php函數?

解決方法:

$subset = array_intersect_key($haystack, array_flip($needleNames));

這通常在名稱pluck或類似輔助函數下使用.

function pluck(array $array, $keys) {

if (!is_array($keys)) {

$keys = func_get_args();

array_shift($keys);

}

return array_intersect_key($array, array_flip($keys));

}

var_dump(pluck($array, array('foo', 'bar', 'baz')));

var_dump(pluck($array, 'foo', 'bar', 'baz'));

标簽:php,arrays

來源: https://codeday.me/bug/20190625/1286805.html