PHP удалить массив, если подмассив пустой - PullRequest
0 голосов
/ 30 августа 2018

мое изображение массива просто так, если подмассив "имя" пуст или я хочу удалить массив, как это сделать?

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 голосов
/ 30 августа 2018

Предположим, что у вас есть следующий набор данных,

$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;
    }
});
0 голосов
/ 30 августа 2018
<?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 в ваш цикл, чтобы вы могли проверить, является ли ваше значение нулевым или пустым, и если это так, вы не заполняете свой новый массив. Также переместил свой счетчик в if, чтобы увеличить его только в массиве успеха, нажав

Более "элегантный" способ для вас, если это условие также:

if (!empty($this->split_name($row['B'])) && !is_null($this->split_name($row['B'])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...