0

我正在尝试搜索数组并取消设置某些元素(如果它们存在于其他数组中)。

[scores] => Array
    (
        [1100190] => 0.15783204288267
        [1100213] => 0.15893037336024
        [2100230] => 0.16258444005331
        [1100516] => 0.16554697418536
        [1100973] => 0.16967437235894
    )

[explanation codes] => Array
    (
        [1100190] => 0
        [1100213] => 0
        [2100230] => 0
        [1100516] => 0
        [1100973] => 0
    )

所以,我想删除例如键“[1100190]”。这就是我现在所拥有的:

// filter out keys we don't want
for($j=0; $j < count($filterData); $j++) {
    $position = array_search($filterData[$j], $recs);
    if($position != false) {
        foreach($recs as $key => $arr) {
            unset($recs[$key][$position]);
        }
    }
 }

在 $filterData 我有例如:11111、1100190。当我尝试回显它并且我的过滤器不起作用时,我没有得到任何 $position 的东西。提前致谢。

解决方案:

foreach($recs as $key => $arr) {
    $position = array_search($key, $filterData);
    if($position != false) {
        unset($recs[$key]);
    }
}

这就是诀窍,感谢您的帮助,尤其是keune。

4

2 回答 2

1

$recs您需要在数组的每个键中进行搜索。尝试这个:

for($j=0; $j < count($filterData); $j++) {
    foreach($recs as $key => $arr) {
        $position = array_search($filterData[$j], $arr);
        if($position !== false) {
            unset($recs[$key][$position]);
        }
    }
}
于 2013-08-31T10:41:36.227 回答
1

正如建议的那样,我会使用array key exists

foreach ($filterData as $k => $v)
{
    if (array_key_exists($k, $recs))
    {
        unset($recs[$k]);
    }
}
于 2013-08-31T10:39:54.150 回答