Skip to content

Instantly share code, notes, and snippets.

@BekNaji
Created December 27, 2021 12:24
Show Gist options
  • Save BekNaji/bb775934375b8c1066ed94994d3ac53f to your computer and use it in GitHub Desktop.
Save BekNaji/bb775934375b8c1066ed94994d3ac53f to your computer and use it in GitHub Desktop.
<?php
# filter function
function filterArray($columns , $list, $filterData)
{
foreach($columns as $column)
{
$filteredArray = $filteredArray ?: $list;
$key = $column['name'];
if(isset($filterData[$key]))
{
if($column['condition'] == '%')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return stripos($item['data'][$key],$filterData[$key]) !== false;
});
}
if($column['condition'] == 'in')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return in_array($item['data'][$key],$filterData[$key]) == true;
});
}
if($column['condition'] == '=')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return $item['data'][$key] == $filterData[$key];
});
}
}
if($column['condition'] == 'number')
{
if($filterData[$key.'_numsel'] == 'exact')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return $item['data'][$key] == $filterData[$key.'_from'];
});
}
if($filterData[$key.'_numsel'] == 'range')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return $item['data'][$key] >= $filterData[$key.'_from'] && $item['data'][$key] <= $filterData[$key.'_to'];
});
}
if($filterData[$key.'_numsel'] == 'more')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return $item['data'][$key] >= $filterData[$key.'_from'];
});
}
if($filterData[$key.'_numsel'] == 'less')
{
$filteredArray = array_filter($filteredArray, function($item) use ($filterData,$key){
return $item['data'][$key] <= $filterData[$key.'_to'];
});
}
}
}
return $filteredArray;
}
# prepare column
$filterColumns = [
['name' => 'market_id','condition' => '='],
['name' => 'cat_id','condition' => '='],
['name' => 'ticker','condition' => '%'],
['name' => 'issue_code','condition' => '%'],
['name' => 'issue_name','condition' => '%'],
];
# call function
$list = filterArray($filterColumns,$list,$filterData);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment