-1

次の 2 次元配列があります。

 Array ( [0] =>
             Array ( [0] => 20130202 
                     [1] => unknown 
                     [2] => 0 
                     [3] => 1 
                     [4] => 0 
                     [5] => 0 
                     [6] => 0 
                     [7] => 19022 
                     [8] => 0 
                     [9] => 0 ) 
          [1] => 
              Array ([0] => 20130202 
                     [1] => ZZ 
                     [2] => 1 
                     [3] => 0 
                     [4] => 0 
                     [5] => 0 
                     [6] => 0 
                     [7] => 4 
                     [8] => 0 
                     [9] => 0 ) 
                  *
                  *

内部アレイの特定の次のエントリを削除しようとしています: 2,4,6,7,8,9. 私が使用しているコードは次のとおりです。

     foreach ($array_with_values as $key => $obj) {
        if ($key == 2 || $key == 4 || $key == 6 || $key == 7 || $key == 8 || $key == 9){
            unset($obj[$key]);
        }
      }

しかし、うまくいきません。何か案は?

4

7 に答える 7

1

これを試して:

foreach ($array_with_values as $key => $obj) {
        if ($key == 2 || $key == 4 || $key == 6 || $key == 7 || $key == 8 || $key == 9){
            unset($array_with_values[$key]);
        }
      }
于 2013-02-05T11:27:38.233 に答える
1

削除したいものに焦点を合わせる代わりに、代わりに必要なものをフィルタリングできます。

$keys = array_flip([0, 1, 3, 5]);

foreach ($outer as &$inner) {
    $inner = array_intersect_key($inner, $keys);
}
于 2013-02-05T11:26:30.793 に答える
1

あなたがする必要があるのは...unset($array_with_values[$key])

次のコード ブロックを検討してください...

$arr = array(1,2,3,4,6);

foreach($arr as $key => $a)
{
    if($a == 2)
    unset($a);
}

print_r($arr);

foreach($arr as $key => $a)
{
    if($a == 2)
    unset($arr[$key]);
}

print_r($arr);

説明したいと思います。

于 2013-02-05T11:28:22.617 に答える
1

これだけ使うunset($array_with_values[$key]);

 foreach ($array_with_values as $key => $obj) {
    if ($key == 2 || $key == 4 || $key == 6 || $key == 7 || $key == 8 || $key == 9){
        unset($array_with_values[$key]);
    }
  }
于 2013-02-05T11:21:57.913 に答える
1

私は次のようにします:

$unwanted = array(2, 4, 6, 7, 8, 9);

for ($i = 0; $i < sizeof($outerArray); $i++) {
    for ($j = 0; $j < sizeof($unwanted); $j++) {
        unset($outerArray[$i][$unwanted[$j]]);
    }
}
于 2013-02-05T11:30:36.960 に答える
0

これを試して

$big_array = array(

 array(20130202 ,'unknown',0,1,0,0,0,19022,0,0),
 array(20130202 ,'ZZ',1,0,0,0,0,4,0,0)
 );

 foreach ($big_array as $ikey => $array) {


       foreach ($array as $key => $val) {

          if (in_array($key, array(2,4,6,7,8,9))) {
             unset($big_array[$ikey][$key]);
          }
       }
    }

print_r($big_array);
于 2013-02-05T11:24:48.833 に答える
0
 foreach ($array_with_values as $key => $obj) {
    if ($key == 2 || $key == 4 || $key == 6 || $key == 7 || $key == 8 || $key == 9){
        unset($obj[$key]);
    }
  }

ここで、最初の配列のキーは 0,1 になるため、以下のようにします。

 $delete = array (2,4,6,7,8,9);
 foreach ($array_with_values as $key => $obj) {
    foreach($delete as $val){
        unset($obj[$val]);
    }
  }
于 2013-02-05T11:23:37.133 に答える