2015-10-19 5 views
-1

У меня есть ajaxlistAction:Удалить пустые массивы из массива

public function ajaxlistAction() 
{ 
    $em = $this->getDoctrine()->getEntityManager(); 
    $qb = $em->createQueryBuilder(); 
    $qb->select('wfsd','b') 
    ->from('TFTDataBundle:WpFormSubmittedData','wfsd') 
    ->leftjoin('wfsd.customFieldData','b') 
    ->leftjoin('b.custom_field','CustomField') 
    ->getQuery()->getResult(); 


    if (!empty($_GET['sSearch'])) { 
     $qb->andWhere('b.data like :search')->setParameter('search', "%{$_GET['sSearch']}%"); 
    } 

    $qc = clone ($qb); 
    $qc->select('COUNT(DISTINCT b.id)'); 
    $count = $qc->getQuery()->getSingleScalarResult(); 

    $columns = array('CustomField.fieldLabel'); 

    if(isset($_GET['iSortCol_0'])){ 
     $dir = empty($_GET['sSortDir_0'])?'asc':$_GET['sSortDir_0']; 
     $qb->orderBy($columns[$_GET['iSortCol_0']], $dir); 
    } 


    if (empty($_GET['iDisplayLength'])) { 
     $_GET['iDisplayLength'] = 10; 
    } 
    if (empty($_GET['sEcho'])) { 
     $_GET['sEcho'] = 1; 
    } 
    if (!empty($_GET['iDisplayStart'])) { 
     $qb->setFirstResult($_GET['iDisplayStart']); 
    } 

    $qb->setMaxResults($_GET['iDisplayLength']); 

    $data = array(); 

    foreach($qb->getQuery()->getResult() as $row) { 

     $rows = array(); 

     foreach ($row->getCustomFieldData() as $customFieldData) { 
      $rows[] = $customFieldData->getData(); 

     } 

     $data[] = $rows; 
    } 

    //$data = $qb->getQuery()->getArrayResult(); 
    return new JsonResponse(array("sEcho"=>$_GET['sEcho'],"iTotalRecords"=>$count,"iTotalDisplayRecords"=>$count,'aaData'=>$data)); 
} 

реакция этого действия, как этот

{"sEcho":"1","iTotalRecords":"44","iTotalDisplayRecords":"44","aaData":[[],[],[],[],[],[],[],["Name","[email protected]","this is subject","this is message"],["sdsd","[email protected]","asa","sdsd"],["sdsd","[email protected]","asa","sdsd"]]} 

И я хочу, чтобы удалить пустые массивы и хотите вывода, как это

{"sEcho":"1","iTotalRecords":"44","iTotalDisplayRecords":"44","aaData":[["Name","[email protected]","this is subject","this is message"],["sdsd","[email protected]","asa","sdsd"],["sdsd","[email protected]","asa","sdsd"]]} 

Как я могу удалить пустые массивы выше?

Пожалуйста, помогите мне, чтобы удалить эти подмассивы из полученного массива

Благодаря

+0

Как вы получили этот массив? Возможно, механизм создания, который вы используете, дает возможность пропускать пустые результаты, что было бы предпочтительнее обычного «итерации по всему предмету и пропускания пустых подматриц». – dcsohl

+0

Его JsonResponse и в нем aaData - массив @dcsohl –

+0

, вы используете 'leftjoin', который будет возвращать строки, которые не связаны с вашим запросом, вы хотите использовать' innerjoin' или 'rightjoin' – cmorrissey

ответ

0

Вы можете изменить эту строку:

$data[] = $rows; 

Для этого:

if(count($rows) > 0) 
$data[] = $rows; 

Это проверит, $rows не пустой массив, а затем нажмите его в $data array

Смежные вопросы