2016-08-25 8 views
0

私はPHPで2つの配列を持っていますが、私は共通の要素を見つけるためにarray_intersect関数を使用しています。ここで第一配列2つの配列をcomapringして、PHPの共通要素のインデックスを返します

は私がこれまで..

function check_if_exists($company_timings,$in_time) 


    {  

    $length_of_company=sizeof($company_timings); 
     $length_of_emp=sizeof($in_time); 
     $common=array_intersect($company_timings,$in_time); 
     $length_of_common=sizeof($common); 
     $key=array_search($common,$company_timings); 
     return $key; 


    } 

を行ってますが、その9時00分00秒と午前11時00分○○秒とするとき、私ある共通の要素があるの鍵を返していないものですarray_searchで$ commonよりむしろ11:00:00を渡すと、$ common_arrayで正確な結果が得られます。それはうまくいきません,,,コードが改善されました。

答えて

0

この関数は、共通要素が見つからない場合、共通要素及びアレイ、又はfalse両方におけるそれらの位置を含む配列を返す:

function check_if_exists($arr1, $arr2) { 
    $combined = array_intersect($arr1, $arr2); 
    if (empty($combined)) 
     return false; 
    $return = array(); 
    foreach ($combined as $elmt) { 
     $return[$elmt] = array(); 
     $return[$elmt]['arr1'] = array_search($elmt, $arr1); 
     $return[$elmt]['arr2'] = array_search($elmt, $arr2); 
    } 
    return $return; 
} 

試験:

$array1 = array('a', 'b', 'c', 'd'); 
$array2 = array('b', 'f', 'g', 'c'); 
$array3 = array('n', 'o', 'p', 'e'); 

$exists = check_if_exists($array1, $array2); 
var_dump($exists); 
$exists_no = check_if_exists($array1, $array3); 
var_dump($exists_no); 

出力:

array (size=2) 
    'b' => 
    array (size=2) 
     'arr1' => int 1 
     'arr2' => int 0 
    'c' => 
    array (size=2) 
     'arr1' => int 2 
     'arr2' => int 3 

boolean false 
0

array_keys関数で試す

次のコード例があります。それがあなたを助けることを願っています。

<?php 
    $a = array("a","b","c"); 
    $b = array("c","d","a"); 
    $c = array_keys(array_intersect($a,$b)); 
    var_dump($c); 
?>