Фильтрация таблиц данных на стороне сервера с использованием ортогональных данных - PullRequest
0 голосов
/ 28 мая 2020

Я создал вложенный набор данных для такой таблицы данных:

  $alldata[$x]["person"]["display"] = $persona_text;
  $alldata[$x]["person"]["sort"]      = $persona_sort;
  $alldata[$x]["person"]["filter"]  = $persona_filter; 

  $alldata[$x]["tel"]["display"]        = $tel;
  $alldata[$x]["tel"]["sort"]           = $tel;
  $alldata[$x]["tel"]["filter"]     = $tel;

Я хотел бы затем отфильтровать на стороне сервера без указания специального c поля «Человек».

Этот код я использую с обычным набором данных datatable:

function filterKeyword( $data, $search, $field = '' ) {

    $filter = '';
    if ( isset( $search['value'] ) ) {
        $filter = $search['value'];
    }
    if ( ! empty( $filter ) ) {

        if ( ! empty( $field ) ) {

            if ( strpos( strtolower( $field ), 'date' ) !== false ) {
                // filter by date range
                $data = filterByDateRange( $data, $filter, $field );
            } else {
                // filter by column
                $data = array_filter( $data, function ( $a ) use ( $field, $filter ) {
                    return (boolean) preg_match( "/$filter/i", $a[ $field ]);
                } );
            }

        } else {                
            $data = array_filter( $data, function ( $a ) use ( $filter ) {
                return (boolean) preg_grep( "/$filter/i", (array) $a );
            } );            
        }
    }

    return $data;
}

Как я могу применить к многомерному массиву?

Спасибо

...