【问题标题】:Unset data in a multidimensional array取消设置多维数组中的数据
【发布时间】:2015-09-30 12:51:02
【问题描述】:

我有 csv[ ][ ]。如何使用 for each 循环取消设置行中的数据?

for each ($index) {
if (conditions to meet) { 
unset(csv[$index]);     
}
}

【问题讨论】:

  • foreach ($csv as $key => $value) { if (0 === strpos($csv[$key][0], 'bad')) { unset($csv[ $key]); } } 谢谢你:)

标签: php multidimensional-array unset


【解决方案1】:

试试这个:

foreach ($csv as $key => $value) {
        unset($csv[$key]);
    }

【讨论】:

    【解决方案2】:

    http://docs.php.net/manual/en/control-structures.foreach.php 说:

    为了能够直接修改循环中的数组元素,在 $value 之前使用 &。在这种情况下,该值将由reference 分配。

    当使用两个 foreach 循环时,您应该使用它来修改行的单个元素。

    <?php
    $csv = [
        [1,2,3,4,5],
        [2,3,4,5,6],
        [3,4,5,6,7],
        [4,5,6,7,8],
    ];
    
    // make $row a reference
    // so that unset($row[...]) affects $csv and not only a "copy".
    foreach( $csv as &$row ) { 
        foreach( $row as $key=>$column ) {
            if ( 0===$column%2 ) { // e.g. remove all even elements
                unset( $row[$key] );
            }
        }
    }
    
    var_export($csv);
    

    打印

    array (
      0 => 
      array (
        0 => 1,
        2 => 3,
        4 => 5,
      ),
      1 => 
      array (
        1 => 3,
        3 => 5,
      ),
      2 => 
      array (
        0 => 3,
        2 => 5,
        4 => 7,
      ),
      3 => 
      array (
        1 => 5,
        3 => 7,
      ),
    )
    

    或者(相同的输出)没有 foreach 循环。

    <?php
    $csv = [
        [1,2,3,4,5],
        [2,3,4,5,6],
        [3,4,5,6,7],
        [4,5,6,7,8],
    ];
    
    $csv = array_map(
        function($row) {
            return array_filter(
                $row,
                function($col) {
                    return 0!==$col%2; 
                }
            );
        },
        $csv
    );
    
    var_export($csv);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      相关资源
      最近更新 更多