commit b6b819722b9296fe827fcfebab780400b31aa7b0
parent 9be32ca3c2282b16ef6cfbb0e4d892fcdb95b374
Author: finwo <finwo@pm.me>
Date: Wed, 13 Apr 2016 19:36:03 +0200
Implemented equals filter
Diffstat:
1 file changed, 34 insertions(+), 9 deletions(-)
diff --git a/src/ArrayQuery.php b/src/ArrayQuery.php
@@ -39,7 +39,7 @@ class ArrayQuery
/**
* @var integer
*/
- protected $limit = -1;
+ protected $limit = -2;
/**
* @var array
@@ -114,7 +114,6 @@ class ArrayQuery
'type' => 'equals',
'value' => $input,
);
-
}
return $this;
@@ -201,11 +200,6 @@ class ArrayQuery
//loop through table
foreach ($this->table as $row) {
- // handle offset
- if ( $this->skip-- > 0) {
- continue;
- }
-
// handle limit
if ( $this->limit-- == 0 ) {
break;
@@ -228,8 +222,20 @@ class ArrayQuery
$outputRow[$colName] = $this->executeSelect($row, $select);
}
- // add row to output
- $output[$outputIndex++] = $outputRow;
+ // run through filters
+ if ( $this->executeFilters($outputRow) ) {
+
+ // handle offset
+ if ( $this->skip-- > 0) {
+ continue;
+ }
+
+ // add row to output
+ $output[$outputIndex++] = $outputRow;
+ } else {
+ $this->limit++;
+ }
+
}
return $output;
@@ -250,4 +256,23 @@ class ArrayQuery
// Return empty column
return null;
}
+
+ protected function executeFilters($row)
+ {
+ foreach ($this->filters as $filter) {
+ switch($filter['type']) {
+ case 'equals':
+ if ($row[$filter['field']] !== $filter['value']) {
+ return false;
+ }
+ break;
+ default:
+ //unknown filter
+ break;
+ }
+
+ }
+
+ return true;
+ }
}