取消设置多维数组中的数据
Posted
技术标签:
【中文标题】取消设置多维数组中的数据【英文标题】: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]); 谢谢你:) 【参考方案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);
【讨论】:
以上是关于取消设置多维数组中的数据的主要内容,如果未能解决你的问题,请参考以下文章