-6

我有两个数组。第一个数组是$newarray = ('489289', '536516', '332833', '536516')

第二个数组是

$rockin = array(
'489289' => array('536516','value1'),
'332833' => array('536516'),
);

我想删除 $newarray 的一些值。假设我们从 $newarray 循环

  1. 最初 489289 被赋值。
  2. 我想检查 $rockin 数组中与 489289 关联的值(即 value1 或 536516)是否也存在于 $newarray 中。
  3. 如果 $newarray 中存在 'value1' 或 '536516' 则从数组中删除 489289!

因此,在上述情况下,489289 将被删除(从 $newarray 中),因为 536516 是 $rockin 数组中 489289 的关联值,并且 $newarray 中也存在 536516

直到现在我已经尝试过这段代码

foreach ($newarray as $group_id) {
    foreach ($rockin as $myfrcikingcl) {
        foreach ($myfrickingcl as $myfrickingleader) {
            if($group_id==$myfrickingleader)
            {
                 unset($newarray[$group_id]);
            }
        }              
    }              
}
4

3 回答 3

1

这就是我理解你想要做的:

$newarray = array('489289', '536516', '332833', '536516');

$rockin = array(
                '489289' => array('536516','332833'),
                '332833' => array('536516'),
          );

foreach ($rockin as $array) {
    foreach ($array as $value) {
        if (in_array($value, $newarray)) {
            $key = array_search($array, $rockin);
            $newarray = array_diff($newarray, array($key));
        }
    }
}
于 2013-09-11T21:12:41.920 回答
0

您使用 $group_id 作为键,但它是一个值。您必须按键取消设置,如下所示:

foreach ($i = 0; $i < count($newarray); $i++) {
    foreach ($rockin as $myfrcikingcl) {
        foreach ($myfrickingcl as $myfrickingleader) {
            if ($newarray[$i] == $myfrickingleader) {
                 unset($newarray[$i]);
            }
        }              
    }              
}
于 2013-09-11T21:01:31.347 回答
0
foreach ($newarray as $k => $v) {
    if(is_array($rockin[$v])){
        foreach ($rockin[$v] as $key => $value) {
            if(in_array($value, $newarray)){
                unset($newarray[$k]);
            }
        }
    }
}
于 2013-09-11T21:10:23.493 回答