fork download
  1. <?php
  2. function check($string) {
  3. $result = false;
  4. if((is_string($string) && (is_object(json_decode($string)) || is_array(json_decode($string))))) {
  5. $array = json_decode($string);
  6. $ar = recursion($array);
  7. $newArr = [];
  8. foreach($ar as $v){
  9. $newArr = array_merge($newArr, $v);
  10. }
  11. if((recursionValue("foo", $newArr) != false) && (recursionValue("bar", $newArr) != false) && recursionValue("bar", $newArr) == recursionValue("foo", $newArr)){
  12. $result = true;
  13. }
  14. }
  15. return $result;
  16. }
  17. function recursionValue($foo, $array = array()){
  18. foreach($array as $key => $value){
  19. if($key == $foo){
  20. return $value;
  21. }
  22. }
  23. }
  24. function recursion($array, $arrStatic = []){
  25.  
  26. static $foo = "foo";
  27. static $bar = "bar";
  28. foreach($array as $key => $value){
  29. if($key == $foo || $key == $bar){
  30. $arrStatic[] = [$key => $value];
  31. }
  32. if(is_object($value)){
  33. $value = (array) $value;
  34. $arrStatic = recursion($value, $arrStatic);
  35. }
  36. }
  37. return $arrStatic;
  38. }
  39.  
  40. $str = '{
  41. "foo": "Test",
  42. "lastName": "Sidorov",
  43. "address": {
  44. "bar": "Test",
  45. "dem": "God",
  46. "postalCode": 10001
  47. },
  48. "phoneNumbers": [
  49. "495 111-1234",
  50. "495 123-7654"
  51.  
  52. ]
  53. }';
  54.  
  55. var_dump(check($str));
  56.  
Success #stdin #stdout 0.01s 52488KB
stdin
Standard input is empty
stdout
bool(true)