-6

私は2つの配列を持っています。1番目の配列は$newarray = ('489289', '536516', '332833', '536516')

2番目の配列は

$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 から) 削除されます。AS 536516 は $rockin 配列の 489289 の値に関連付けられており、536516 も $newarray に存在します。

今まで私はこのコードを試しました

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 に答える