Php 删除包含特定字符串的未设置数组

Php 删除包含特定字符串的未设置数组,php,multidimensional-array,Php,Multidimensional Array,我已从CSV导入以下阵列: 排列 ( [0]=>阵列 ( [0]=>季度统计数据;2011年第一季度;2011年第二季度;2011年第三季度;2011年第四季度;2012年第一季度;2012年第二季度;2012年第三季度;2012年第四季度;2013年第一季度;2013年第二季度;2013年第三季度;2013年第四季度;2014年第一季度 ) 所以 我想去掉所有包含“%and TOTAL”的数组 我想循环并取消匹配案例: $remove=“总计”; foreach($csv作为$key=>$va

我已从CSV导入以下阵列:

排列 ( [0]=>阵列 ( [0]=>季度统计数据;2011年第一季度;2011年第二季度;2011年第三季度;2011年第四季度;2012年第一季度;2012年第二季度;2012年第三季度;2012年第四季度;2013年第一季度;2013年第二季度;2013年第三季度;2013年第四季度;2014年第一季度 )

所以

我想去掉所有包含“%and TOTAL”的数组

我想循环并取消匹配案例:

$remove=“总计”; foreach($csv作为$key=>$value){

} }

这是我得到的错误: 警告:in_array()要求参数2为数组,给定null

我的PHP版本5.3.10

您是这样做的,还是使用数组过滤器

我在论坛上浏览了2个小时,但是我找不到任何帮助我的提示

干杯。

对你来说:

foreach ($csv as $subArray)
{
    for ($i = 0, $len = count($subArray); $i < $len; $i++)
    {
        if (strpos($subArray[$i], $remove) !== false)
            unset($subArray[$i])
    }
}
foreach($csv作为$subArray)
{
对于($i=0,$len=count($subArray);$i<$len;$i++)
{
if(strpos($subArray[$i],$remove)!==false)
未设置($subArray[$i])
}
}
评论:

  • 对strpo进行严格比较,如果我们使用!=,那么0位置将等于false
  • 内部循环是“for循环”,因为最好避免更改foreach内部数组的内容

  • 您可以通过
    preg\u replace
    尝试删除
    TOTAL
    %
    。如果要从
    数组中删除元素,请使用
    unset
    &最后使用
    array\u 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>';
    
    $newArr=array();
    foreach($arr作为$key=>$value){
    foreach($k=>v的值){
    $newArr[$key][$k]=preg_replace(“/(总计)()/”,“,$v);//用于删除总计&%
    unset($arr[$key][$k]);//用于取消设置包含总计的数组元素&%
    }
    }
    //替换输出
    打印“”;
    印刷费($newArr);
    打印“”;
    //使用unset后的输出
    打印“”;
    打印(数组过滤器($arr));
    打印“”;
    
    替换输出

    打印“”;
    印刷费($newArr);
    打印“”;
    
    使用unset后的输出

    打印“”;
    打印(数组过滤器($arr));
    打印“”;
    
    我确实创建了与从CSV导入的完全相同的数组。 未设置未设置数组2,3,4,该数组包含总计和%。
    unset不取消数组2,3,4的设置,其中包含TOTAL和%。

    警告:array_filter()要求参数1为数组,其中的null为打印中的数组(array_filter($arr));$newArr=$csv;foreach($arr as$key=>$value){foreach($k=>$v){$newArr[$k]=preg_replace('/(TOTAL)|(%/'),''$v)//用于删除未设置的总数和%($arr[$key][$k]);//用于通过替换打印“”取消设置包含总计&%}//输出的数组元素;打印($newArr);打印“”;//使用取消设置打印“”后的输出;打印($arr)数组过滤器;打印“”;我的PHP版本有问题吗?我的版本是5.3.0,我想你误解了。
    $arr
    是原始的
    array
    。在阅读
    CSV
    文件后分配
    $arr
    array\u filter()
    需要一个
    array
    。可能会给你一个
    null
    值。
    foreach ($csv as $subArray)
    {
        for ($i = 0, $len = count($subArray); $i < $len; $i++)
        {
            if (strpos($subArray[$i], $remove) !== false)
                unset($subArray[$i])
        }
    }
    
    $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>';
    
    $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>';