在多维数组中取消设置数据

时间:2015-07-12 00:58:40

标签: php multidimensional-array unset

我有csv [] []。如何在每个循环中使用a来取消行中的数据?

SimpleDateFormat oldTime = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat newTime = new SimpleDateFormat("hh:mm:ss a");

String stringTime;

try {

        String reformattedStr = newTime.format(oldTime.parse(stringTime));
        } catch (ParseException e) {
        e.printStackTrace();
        }

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:0)

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

为了能够直接修改循环内的数组元素,在$ value之前加上&amp ;.在这种情况下,该值将由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);