我使用json_decode
获得以下输出Array
(
[0] => Array
(
[...] => ...
[...] => ...
)
[1] => Array
(
[...] => ...
[...] => ...
)
我想要做的是将它导入一个类,以便我可以从内存中调用和引用数据。
从研究中我发现了这个: How to convert an array into an object using stdClass()
但是,我不确定stdClass是否是我想要的方式?
答案 0 :(得分:2)
PHP manual的功能定义:
reshape
考虑您的JSON字符串mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
,您必须使用[{"first_name":"Jason","last_name":"Pass", [...]
并将其第二个参数设置为TRUE。
这意味着来自JSON字符串的对象将作为关联数组返回。如果省略第二个参数(或使用默认的FALSE值),您将得到:
json_decode
这意味着JSON字符串中的对象将保留为对象。
但是,包含对象的数组仍将是一个数组,因为它应该是这样的,你不应该强迫它成为一个对象。没有充分的理由这样做。
答案 1 :(得分:1)
在启动数组之前放置对象
use Doctrine\Bundle\DoctrineBundle\ConnectionFactory;
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Configuration;
use Symfony\Component\HttpFoundation\RequestStack;
class DynamicConnectionFactory extends Factory
{
/** @var RequestStack */
private $requestStack;
public function __construct(array $types, RequestStack $stack)
{
parent::__construct($types);
$this->requestStack = $stack;
}
public function createConnection(array $params, Configuration $config = null, EventManager $eventManager = null, array $mappingTypes = array())
{
$host = $this->requestStack->getMasterRequest()->getHost();
$params = $this->replaceParamsForHost(array $params, $host);
return parent::createConnection($params, $config, $eventManager, $mappingTypes);
}
private function replaceParamsForHost(array $params, $host)
{
//do your magic, i.e parse config or call Memcache service or count the stars
return array_replace($params, ['database' => $host]);
}
}