我从CSV导入了以下数组:
阵 ( [0] =>排列 ( [0] =>季度统计; 2011年第1季度; 2011年第2季度; 2011年第3季度; 2011年第4季度; 2012年第1季度; 2012年第2季度; 2012年第3季度; 2012年第4季度; 2013年第1季度; 2013年第2季度; 2013年第3季度; 2013年第4季度; Q1 / 2014 )
[1] => Array
(
[0] => January;7500;8800;9500;10000;10500;11000;11500;12000;12500;13000;13420;13820;14200
)
[2] => Array
(
[0] => ;;17
[1] => 30%;8%;5
[2] => 30%;5%;4
[3] => 80%;4
[4] => 50%;4
[5] => 30%;4
[6] => 20%;4%;3
[7] => 20%;3%;2
[8] => 70%
)
[3] => Array
(
[0] => TOTAL;7500;8500;9500;11000;12500;11400;11800;13000;12500;13000;13420;13820;14200
)
[4] => Array
(
[0] => ;;17
[1] => 30%;7
[2] => 95%;5
[3] => 26%;5%;4
[4] => 76%;4
[5] => 55%;4
[6] => 35%;4
[7] => 17%;4%;3
[8] => 23%;2
[9] => 98%;2
[10] => 75%
)
所以,
我想摆脱所有包含“%and TOTAL”的数组。
我想循环并取消设置匹配的案例:
$ remove =“TOTAL”; foreach($ csv as $ key => $ value){
if (in_array($remove,$value[$key])){
unset($value[$key]);
} }
这是我得到的错误: 警告:in_array()期望参数2为数组,给定
为null我的PHP版本5.3.10
你会这样做,还是会使用array_filter?
我正在浏览2小时的论坛,但我找不到任何暗示帮助我。
干杯。
答案 0 :(得分:1)
您可以preg_replace
尝试删除TOTAL
& %
。如果您要从array
中移除该元素,请使用unset
&最后使用array_filter
删除null
元素。
$newArr = array();
foreach($arr as $key=>$value){
foreach($value as $k=>$v){
$newArr[$key][$k] = preg_replace('/(TOTAL)|(%)/', '', $v); //for removing TOTAL & %
unset($arr[$key][$k]); //for unset the array elements that contains TOTAL & %
}
}
//Output by replacement
print '<pre>';
print_r($newArr);
print '</pre>';
//output after using unset
print '<pre>';
print_r(array_filter($arr));
print '</pre>';
答案 1 :(得分:0)
在你的情况下:
foreach ($csv as $subArray)
{
for ($i = 0, $len = count($subArray); $i < $len; $i++)
{
if (strpos($subArray[$i], $remove) !== false)
unset($subArray[$i])
}
}
评论:
答案 2 :(得分:0)
$arr[][] = ("QUARTERLY STATS;Q1/2011;Q2/2011;Q3/2011;Q4/2011;Q1/2012;Q2/2012;Q3/2012;Q4/2012;Q1/2013;Q2/2013;Q3/2013;Q4/2013;Q1/2014");
$arr[][] = ("January;7500;8800;9500;10000;10500;11000;11500;12000;12500;13000;13420;13820;14200");
$arr[] = array(";;17","30%;8%;5","30%;5%;4","80%;4","50%;4","30%;4","20%;4%;3","20%;3%;2","70%");
$arr[][] = ("TOTAL;7500;8500;9500;11000;12500;11400;11800;13000;12500;13000;13420;13820;14200");
$arr[] = array("30%;7","95%;5","26%;5%;4","76%;4","55%;4","35%;4","17%;4%;3","23%;2","98%;2","75%");
$newArr = array();
foreach($arr as $key=>$value) {
foreach($value as $k=>$v) {
$newArr[$key][$k] = preg_replace('/(TOTAL)|(%)/', '', $v); //for removing TOTAL & %
unset($arr[$key][$k]); //for unset the array elements that contains TOTAL & %
}
unset($arr[$key]); // IT does not unset ARR[2] ARR[3] and ARR[4] containing TOTAL & %
}
替换产生
print '<pre>';
print_r($newArr);
print '</pre>';
使用未设置后的输出
print '<pre>';
print_r(array_filter($arr));
print '</pre>';
我确实创建了与从CSV导入的ARRAY完全相同的ARRAY。 unset不会取消设置包含TOTAL AND%的ARRAY2,3,4。 unset不会取消设置包含TOTAL AND%的ARRAY2,3,4。