通过搜索另一个数组

时间:2016-08-06 08:29:29

标签: php arrays

我正在尝试构建一个应用程序,其中有2个数组,第二个数组正在将 rsort 应用于第一个数组。

$array_1 = array('20','30','30','20');
$array_2 = array('30','30','20','20');

我想通过在array_2中搜索array_1并返回键值来生成一个新数组,即

$key_array = array('2','0','1','3');

我试过

$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);

但获得 2,0,0,2

我也尝试用&#39; xx&#39;替换当前密钥。但它也打印2,0,0,2

foreach($array_1 as $key=>$arr1){
    $array_1[$key] = 'xx';
    $first_keys[] = array_search($arr1, $array_2);
}

2 个答案:

答案 0 :(得分:2)

您需要从$ array2中删除每次搜索的值,同时保留数组引用。这应该有效(不能在这里测试):

$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);

答案 1 :(得分:1)

您必须从第二个数组中删除搜索到的密钥。

从第二个数组取消设置该键。(工作)

- pip install --upgrade setuptools