php array_search和unset多维数组

时间:2013-08-31 10:28:54

标签: php

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

[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。

2 个答案:

答案 0 :(得分:1)

根据建议,我会使用array key exists

foreach ($filterData as $k => $v)
{
    if (array_key_exists($k, $recs))
    {
        unset($recs[$k]);
    }
}

答案 1 :(得分: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]);
        }
    }
}