>백엔드 개발 >PHP 튜토리얼 >배열 산술 문제, 3차원 배열, 첫 번째 레이어에 있는 각 배열의 하위 배열에 있는 각 요소의 sk_id를 사용하여 8개의 연속된 빈 배열을 제거하는 방법은 무엇입니까?

배열 산술 문제, 3차원 배열, 첫 번째 레이어에 있는 각 배열의 하위 배열에 있는 각 요소의 sk_id를 사용하여 8개의 연속된 빈 배열을 제거하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-09-08 08:43:511158검색

대형 배열에 있는 하위 배열의 각 요소에 sk_id가 비어 있는 8개의 연속 하위 요소가 있는 경우 이 하위 배열을 제거하세요. 데이터는 다음과 같이 인쇄됩니다.

<code>array(100) {  

    [0] =array(88){
         [0] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473159600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(0)
          }
          [1] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473150900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(1)
          }
          [2] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473147900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(2)
          }
          [3] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473144600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(3)
          }
        
          ....
     },
      
    [1] =array(88){
         [0] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473159600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(0)
          }
          [1] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473150900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(1)
          }
          [2] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473147900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(2)
          }
          [3] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473144600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(3)
          }
          ....
      }
      
      ....
}</code>

답글 내용:

대형 배열에 있는 하위 배열의 각 요소에 sk_id가 비어 있는 8개의 연속 하위 요소가 있는 경우 이 하위 배열을 제거하세요. 데이터는 다음과 같이 인쇄됩니다.

<code>array(100) {  

    [0] =array(88){
         [0] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473159600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(0)
          }
          [1] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473150900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(1)
          }
          [2] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473147900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(2)
          }
          [3] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473144600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(3)
          }
        
          ....
     },
      
    [1] =array(88){
         [0] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473159600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(0)
          }
          [1] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473150900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(1)
          }
          [2] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473147900"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(2)
          }
          [3] => array(8) {
            ["email"] => string(19) "13537951319@163.com"
            ["sno"] => string(15) "106725097310815"
            ["class_id"] => string(3) "559"
            ["user_id"] => string(4) "6648"
            ["date_time"] => string(10) "1473144600"
            ["classname"] => string(15) "呵呵呵呵呵"
            ["sk_id"] => NULL
            ["num"] => int(3)
          }
          ....
      }
      
      ....
}</code>

<code>   foreach($arr as $k1 =>$v1){
   
       $z=0;
       foreach($v1 as $k2 =>$v2){
            if(empty($v2['sk_id'])){
                $z=$z+1;
            }else{
                $z=0;
            }
            if($z==8){
                unset($arr[$k1]);
                break;
            }
       }
        
  }


print_r($arr);
</code>

이거 괜찮은지 보실래요

간단한 예제를 작성하고 연속으로 세 번 반복한 후 하위 배열을 제거합니다.

배열:

<code class="php">array(2) {
  [0]=>
  array(3) {
    [0]=>
    array(2) {
      ["key"]=>
      int(0)
      ["sk_id"]=>
      NULL
    }
    [1]=>
    array(2) {
      ["key"]=>
      int(1)
      ["sk_id"]=>
      NULL
    }
    [2]=>
    array(2) {
      ["key"]=>
      int(2)
      ["sk_id"]=>
      NULL
    }
  }
  [1]=>
  array(3) {
    [0]=>
    array(2) {
      ["key"]=>
      int(0)
      ["sk_id"]=>
      NULL
    }
    [1]=>
    array(2) {
      ["key"]=>
      int(1)
      ["sk_id"]=>
      NULL
    }
    [2]=>
    array(2) {
      ["key"]=>
      int(2)
      ["sk_id"]=>
      int(1)
    }
  }
}
</code>

코드:

<code class="php">$three = array(
        array(
            array(
                'key' => 0,
                'sk_id' => null
            ),
            array(
                'key' => 1,
                'sk_id' => null
            ),
            array(
                'key' => 2,
                'sk_id' => null
            ),
        ),
        array(
            array(
                'key' => 0,
                'sk_id' => null
            ),
            array(
                'key' => 1,
                'sk_id' => null
            ),
            array(
                'key' => 2,
                'sk_id' => 1
            ),
        ),

    );

    $result = array();
    foreach($three as $key=>$value) {
        $flag = 0;
        foreach($value as $k => $v) {
            if($v['sk_id'] == null) {
                $flag += 1;
            }
        }
        if($flag < 3) {
            array_push($result,$value);
        }
    }
    var_dump($result);
}</code>

출력:

<code class="php">array(1) {
  [0]=>
  array(3) {
    [0]=>
    array(2) {
      ["key"]=>
      int(0)
      ["sk_id"]=>
      NULL
    }
    [1]=>
    array(2) {
      ["key"]=>
      int(1)
      ["sk_id"]=>
      NULL
    }
    [2]=>
    array(2) {
      ["key"]=>
      int(2)
      ["sk_id"]=>
      int(1)
    }
  }
}</code>

이 아이디어를 보세요. 테스트해본 적은 없습니다

<code>function test($array)
    {
        $result = array();
        foreach ($array as $key => $val) {
            $flag = false;
            foreach ($val as $k => $v) {
                if ($v['sk_id'] != null) {
                    $flag = true;
                }
            }
            if ($flag) {
                $result[] = $val;
            }
        }
        return $result;
    }</code>

<code>foreach ($data $key=>$row){

    $i=1;
    foreach ($row as $k=>$r){
         if (empty($r['sk_id'])){       
            $i++;
         }   
         if (!empty($r['sk_id']) && $i<8){
            $i=1;
         }      
         if ($i>8){
             unset($data[$key]);
             break;
         }       
    }
}</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.