diff --git a/lib/PayPal/Common/PPModel.php b/lib/PayPal/Common/PPModel.php index 770724a..fa38945 100644 --- a/lib/PayPal/Common/PPModel.php +++ b/lib/PayPal/Common/PPModel.php @@ -151,29 +151,31 @@ class PPModel */ public function fromArray($arr) { - foreach ($arr as $k => $v) { - if (is_array($v)) { - $clazz = PPReflectionUtil::getPropertyClass(get_class($this), $k); - if (PPArrayUtil::isAssocArray($v)) { - /** @var self $o */ - $o = new $clazz(); - $o->fromArray($v); - $this->assignValue($k, $o); - } else { - $arr = array(); - foreach ($v as $nk => $nv) { - if (is_array($nv)) { - $o = new $clazz(); - $o->fromArray($nv); - $arr[$nk] = $o; - } else { - $arr[$nk] = $nv; + if (!empty($arr)) { + foreach ($arr as $k => $v) { + if (is_array($v)) { + $clazz = PPReflectionUtil::getPropertyClass(get_class($this), $k); + if (PPArrayUtil::isAssocArray($v)) { + /** @var self $o */ + $o = new $clazz(); + $o->fromArray($v); + $this->assignValue($k, $o); + } else { + $arr = array(); + foreach ($v as $nk => $nv) { + if (is_array($nv)) { + $o = new $clazz(); + $o->fromArray($nv); + $arr[$nk] = $o; + } else { + $arr[$nk] = $nv; + } } + $this->assignValue($k, $arr); } - $this->assignValue($k, $arr); + } else { + $this->assignValue($k, $v); } - } else { - $this->assignValue($k, $v); } } return $this; diff --git a/sample/common.php b/sample/common.php index 51ca6fa..8ebdd72 100644 --- a/sample/common.php +++ b/sample/common.php @@ -158,7 +158,7 @@ class ResultPrinter if (is_a($object, 'PayPal\Common\PPModel')) { /** @var $object \PayPal\Common\PPModel */ echo '
' . $object->toJSON(128) . "
"; - } elseif (\PayPal\Validation\JsonValidator::validate($object, true)) { + } elseif (is_string($object) && \PayPal\Validation\JsonValidator::validate($object, true)) { echo '
'. str_replace('\\/', '/', json_encode(json_decode($object), 128)) . "
"; } elseif (is_string($object)) { echo '
' . $object . '
';