簡體   English   中英

從PHP中的2D數組中刪除值

[英]Delete values from a 2d array in php

我有以下二維數組:

 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]);
        }
      }

但這是行不通的。 有任何想法嗎?

僅使用此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]);
    }
  }

除了專注於要刪除的內容,您還可以過濾想要的內容:

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

foreach ($outer as &$inner) {
    $inner = array_intersect_key($inner, $keys);
}

嘗試這個:

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]);
        }
      }

您需要做的是... 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);

我希望你能解釋一下。

我會這樣:

$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]]);
    }
}
 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]);
    }
  }

嘗試這個

$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM