如果子数组为空,PHP删除数组

时间:2018-08-30 07:37:55

标签: php arrays codeigniter

我的数组图像就像这样,如果子数组“名称”为空或为空,我想删除数组,该怎么做?

here's my array

这是我当前的脚本

    $data       = array();
    $fixedData  = array();
    $countyName = array();
    $numrow = 2;
    echo "<pre>";
    // insert to tb participant => 1
    foreach($sheet as $key => $row){
    $data[] = array(
            'name' => $this->split_name($row['B']),
            'phone' => $row['D'],
            'mobile' => $row['E'],
            'institution' => $row['F'],
            'departement' => $row['G'],
            'address' => $row['H'],
            'country' => $row['I'],
    );

      $numrow++; 
    }
    unset($data[0]); //delete first row
    $data = array_values($data);

    //loop search data 

    var_dump ($data);
    die();

2 个答案:

答案 0 :(得分:0)

<?php

$data       = array();
$fixedData  = array();
$countyName = array();
$numrow = 2;
echo "<pre>";
// insert to tb participant => 1
foreach($sheet as $key => $row){

    if($this->split_name($row['B'])!=='' && $this->split_name($row['B'])!==NULL){
        $data[] = array(
            'name' => $this->split_name($row['B']),
            'phone' => $row['D'],
            'mobile' => $row['E'],
            'institution' => $row['F'],
            'departement' => $row['G'],
            'address' => $row['H'],
            'country' => $row['I'],
        );
        $numrow++;
    }

}



//loop search data

var_dump ($data);
die();

我简单地在循环中放置一个if条件,以便您可以检查您的值是否为null或为空,如果是,则不填充新数组。还可以将计数器移动到if内,以便仅在成功数组推送中将其递增

对于您的if条件来说,这也是一种“优雅”的方式:

if (!empty($this->split_name($row['B'])) && !is_null($this->split_name($row['B'])))

答案 1 :(得分:0)

假设您具有以下数据集,

$array = [
    [
        'name' => 'not null', 'phone' => 12546
    ],[
        'name' => '', 'phone' => 852147
    ],[
        'name' => null, 'phone' => 96325874
    ],[
        'name' => 'have value', 'phone' => 12546
    ],
];

您可以通过几种方式过滤空值或空值:

1-

foreach ($array as $key => &$value) {
    if (empty($value['name']) || is_null($value['name'])) {
        $value = null;
    }
}

$array = array_filter($array);

2-

$newData = [];
foreach ($array as $key => $value) {
    if (!empty($value['name']) && !is_null($value['name'])) {
        $newData[] = $value;
    }
}

3-使用array_walk

$newData = [];
array_walk($array, function ($value, $key) use (&$newData) {
    if (!empty($value['name']) && !is_null($value['name'])) {
        $newData[] = $value;
    }
});

4-使用array_filter

$newData = array_filter($array, function ($value) {
    if (!empty($value['name']) && !is_null($value['name'])) {
        return $value;
    }
});