From db2f2a56c55ebaebcb16356b24b6ad3fd95bc447 Mon Sep 17 00:00:00 2001 From: Jeremie Foucault Date: Tue, 5 Sep 2017 17:19:51 +0200 Subject: [PATCH] Allow to evaluate array length instead of value --- src/JWadhams/JsonLogic.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/JWadhams/JsonLogic.php b/src/JWadhams/JsonLogic.php index cc01421..ca6a8ae 100644 --- a/src/JWadhams/JsonLogic.php +++ b/src/JWadhams/JsonLogic.php @@ -86,8 +86,13 @@ public static function apply($logic = [], $data = []) { //This is actually safe for integer indexes, PHP treats $a["1"] exactly like $a[1] foreach(explode('.', $a) as $prop){ if(is_array($data)){ - if(!isset($data[$prop])) return $default; //Not found - $data = $data[$prop]; + if (isset($data[$prop])) { + $data = $data[$prop]; + } elseif ($prop === 'length') { + $data = count($data); + } else { + return $default; + } }elseif(is_object($data)){ if(!property_exists($data,$prop)) return $default; //Not found $data = $data->{$prop};