【发布时间】:2015-07-15 09:30:24
【问题描述】:
首先很抱歉,如果这是一个重复的问题,但我找不到任何可以解决我的问题的方法。
我正在从 DB(Postgres) 中获取数据并将其解析为 Json 数组。 数据是这样的
[{"login":"root@localhost","first_name":"Admin","last_name":"Name","title":null},{"login":"another@localhost","first_name":"More","last_name":"Data","title":"X"}]
我获取这些数据的代码是这样的:
foreach ($jsonData as $us) {
$user = new App\User;
$user->name = $us->login; //same thing for the rest of data
我收到的错误是我无法使用 -> 从 JSON 调用数据,但 var_dump'ing $jsonData 指出它是一个包含所有正确元素的数组。
PS:忘记添加,但我尝试var_dump($jsonData['login'][0]); 获得第一次登录(应该是“root@localhost”)但它显示“未定义索引:登录”
【问题讨论】:
-
当您执行
var_dump($jsonData['login'][0]);时,您的索引倒退了。如果你做了var_dump($jsonData[0]['login']);它应该可以工作 -
可能无关紧要,但我认为您的 foreach 循环缺少结束
}? -
还有
->不工作。 PHP 有一个json_decode()方法,它允许将 JSON 字符串解析为数组或对象(基于函数中的布尔参数)。我假设您的数据库驱动器在您查询数据后会自动将数据解析为数组。我猜你看到了一些 JSON 数据是对象的例子,因此给你带来了一些困惑。可能是错的,只是想把它扔在那里。 -
@CJWurtz 实际上就是这样。我并不完全意识到可以将 json 从字符串解析为对象或数组。 (从没想过会有很大的不同)。但是现在我把我以前对 json 的使用以及后来使用它和 Laravel 的经验放在一起,现在这实际上变得更有意义了。非常感谢。
-
@lozadaOmr 缺少的括号只是帖子的复制错误。代码本身没问题。它现在正在工作。
标签: php arrays json postgresql laravel-5