2010-05-02 17 views
6

निर्दिष्ट कर रहे हैं यह देर हो चुकी है और मैं जानता हूँ कि यह एक बहुत ही सरल सवाल है लेकिन अभी मैं एक विचार की जरूरत नहीं है और समय सीमा के पास है ..साहचर्य सरणी से प्राप्त ही नहीं तत्व है जो कुंजी

मैं दो सरणियों मिल गया है :

$array1 = array(
    'a' => 'asdasd', 
    'b' => 'gtrgrtg', 
    'c' => 'fwefwefw', 
    'd' => 'trhrtgr', 
); 
$array2 = array(
    'b', 'c' 
); 

समारोह के नाम पर दूसरी सरणी से चाबी से Assoc सरणी का एक हिस्सा पाने के लिए क्या था?

$result = array(
    'b' => 'gtrgrtg', 
    'c' => 'fwefwefw', 
); 

धन्यवाद!

उत्तर

20

इस प्रयास करें:

array_intersect_key($array1, array_flip($array2)). 
+0

वह था! धन्यवाद। मेरे लिए शर्म आती है। ;) – hsz

+0

वाह! किसी भी तरह से मैंने आज इस समारोह को याद किया है। ठंडा! http://php.net/array_intersect_key – artlung

0

मुझे लगता है कि इस तरह का कोई समारोह है, तो मैं एक को लागू करेगा:

function array_filter_keys($array, $keys) { 
    $newarray = array(); 
    foreach ($keys as $key) { 
    if (array_key_exists($key, $array)) $newarray[$key] = $array[$key]; 
    } 
    return $newarray; 
} 
0

मैं अगर वहाँ एक निर्मित है कि यह करता है में देखने के लिए उत्सुक हूँ। यहां बताया गया है कि मैं इसे कैसे करूंगा।

$result = array(); 
foreach ($array2 as $key) { 
    if (array_key_exists($key, $array1) { 
    $result[$key] = $array1[$key]; 
    } 
} 
संबंधित मुद्दे