使用unset删除PHP多维数组元素

时间:2017-06-09 11:38:52

标签: php arrays

拥有这个多维数组。如何删除此元素?

True

尝试了unset(),array_pop()但两者都不起作用。

unset()示例:

 [1]=>
    array(0) {
    }

为什么显示它,不是数组(0)表示零元素的数组?它为什么存在?

echo "before\n";
var_dump($body['body'][0][1]);
unset($body['body'][0][1][1]);
echo "after\n";
var_dump($body['body'][0][1]);

before
array(4) {
  ["token_name"]=>
  string(7) "C_BLOCK"
  ["token_group"]=>
  string(7) "C_BLOCK"
  ["group"]=>
  bool(true)
  ["body"]=>
  array(2) {
    [0]=>
    array(1) {
      [0]=>
      array(5) {
        ["token_name"]=>
        string(12) "C_CASE_BLOCK"
        ["token_group"]=>
        string(12) "C_CASE_BLOCK"
        ["group"]=>
        bool(true)
        ["args"]=>
        array(1) {
          [0]=>
          array(6) {
            ["token_name_org"]=>
            string(9) "T_LNUMBER"
            ["token"]=>
            int(317)
            ["value"]=>
            string(2) "10"
            ["line"]=>
            int(4)
            ["token_group"]=>
            string(9) "VARIABLES"
            ["token_name"]=>
            string(8) "C_NUMBER"
          }
        }
        ["body"]=>
        array(1) {
          [0]=>
          array(2) {
            [0]=>
            array(6) {
              ["token_name_org"]=>
              string(6) "T_ECHO"
              ["token"]=>
              int(328)
              ["value"]=>
              string(4) "echo"
              ["line"]=>
              int(5)
              ["token_group"]=>
              string(9) "FUNCTIONS"
              ["token_name"]=>
              string(6) "C_ECHO"
            }
            [1]=>
            array(6) {
              ["token_name_org"]=>
              string(26) "T_CONSTANT_ENCAPSED_STRING"
              ["token"]=>
              int(323)
              ["value"]=>
              string(4) "test"
              ["line"]=>
              int(5)
              ["token_group"]=>
              string(7) "STRINGS"
              ["token_name"]=>
              string(8) "C_STRING"
            }
          }
        }
      }
    }
    [1]=>
    array(0) {
    }
  }
}
after
array(4) {
  ["token_name"]=>
  string(7) "C_BLOCK"
  ["token_group"]=>
  string(7) "C_BLOCK"
  ["group"]=>
  bool(true)
  ["body"]=>
  array(2) {
    [0]=>
    array(1) {
      [0]=>
      array(5) {
        ["token_name"]=>
        string(12) "C_CASE_BLOCK"
        ["token_group"]=>
        string(12) "C_CASE_BLOCK"
        ["group"]=>
        bool(true)
        ["args"]=>
        array(1) {
          [0]=>
          array(6) {
            ["token_name_org"]=>
            string(9) "T_LNUMBER"
            ["token"]=>
            int(317)
            ["value"]=>
            string(2) "10"
            ["line"]=>
            int(4)
            ["token_group"]=>
            string(9) "VARIABLES"
            ["token_name"]=>
            string(8) "C_NUMBER"
          }
        }
        ["body"]=>
        array(1) {
          [0]=>
          array(2) {
            [0]=>
            array(6) {
              ["token_name_org"]=>
              string(6) "T_ECHO"
              ["token"]=>
              int(328)
              ["value"]=>
              string(4) "echo"
              ["line"]=>
              int(5)
              ["token_group"]=>
              string(9) "FUNCTIONS"
              ["token_name"]=>
              string(6) "C_ECHO"
            }
            [1]=>
            array(6) {
              ["token_name_org"]=>
              string(26) "T_CONSTANT_ENCAPSED_STRING"
              ["token"]=>
              int(323)
              ["value"]=>
              string(4) "test"
              ["line"]=>
              int(5)
              ["token_group"]=>
              string(7) "STRINGS"
              ["token_name"]=>
              string(8) "C_STRING"
            }
          }
        }
      }
    }
    [1]=>
    array(0) {
    }
  }
}

2 个答案:

答案 0 :(得分:3)

请试试这个:

unset($body['body'][1]);

<强>更新

试试这个:

unset($body['body'][0][1]['body'][1]);

您需要取消设置正确的索引

答案 1 :(得分:0)

您可以尝试这样的事情:

$clear = array();
foreach($your_array_variable as $key=>$val){
    $val = '';
    $clear [$key] = $val;
}

的print_r($清楚); 参考:more

OR

foreach (my_array_keys($array, 'apple') as $key) {
    unset($array[$key]);
}

OR

// destroy a single variable
unset($foo);

// destroy a single element of an array
unset($bar['body']);

// destroy more than one variable
unset($foo1, $foo2, $foo3);