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

提案されたように、私は使用しますarray key exists

foreach ($filterData as $k => $v)
{
    if (array_key_exists($k, $recs))
    {
        unset($recs[$k]);
    }
}
于 2013-08-31T10:39:54.150 に答える
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 に答える