Reputation: 586
i am trying to building an application in which 2 arrays is there, second array is getting applying rsort to first array.
$array_1 = array('20','30','30','20');
$array_2 = array('30','30','20','20');
i want generate a new array by searching array_1 in array_2 and return key values, ie
$key_array = array('2','0','1','3');
I tried like
$array_1 = array('20','30','30','20');
$array_2 = $array_1;
rsort($array_2);
$first_keys = array();
foreach($array_1 as $key=>$arr1){
$first_keys[] = array_search($arr1, $array_2);
}
echo "<pre>";
print_r($first_keys);
but its getting 2,0,0,2
I also tried replacing current key by 'xx'.but it also printing 2,0,0,2
foreach($array_1 as $key=>$arr1){
$array_1[$key] = 'xx';
$first_keys[] = array_search($arr1, $array_2);
}
Upvotes: 0
Views: 28
Reputation: 156
You have to remove searched key from second array.
Unset that key from second array.(working)
$array_1 = array('20','30','30','20');
$array_2 = $array_1;
rsort($array_2);
$first_keys = array();
foreach($array_1 as $key=>$arr1){
$searchKey = array_search($arr1, $array_2);
$first_keys[] = $searchKey;
unset($array_2[$searchKey]);
}
echo "<pre>";
print_r($first_keys);
Upvotes: 1
Reputation: 1172
You need to remove from $array2 the value on each search, while preserving the array references. This should work (can't test here):
$array_1 = array('20','30','30','20');
$array_2 = $array_1;
rsort($array_2);
$first_keys = array();
foreach($array_1 as $key=>$arr1){
$key= array_search($arr1, $array_2);
$first_keys[] = $key;
$array_2[$key]="";
}
echo "<pre>";
print_r($first_keys);
Upvotes: 2