【问题标题】:php get specific json array element tagphp获取特定的json数组元素标签
【发布时间】: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


【解决方案1】:

因为您的 JSON 不是存储在对象中,而是存储在数组中:

foreach ($jsonData as $us) {
    $user = new App\User;
    $user->name = $us['login']; //same thing for the rest of data
}

【讨论】:

  • 我上次尝试这个时一定是不小心输入了错误,因为现在我按照你的建议做了,它工作得很好。也许是因为我使用了括号“”而不是冒号''或类似的东西。不管怎样,非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2020-02-11
  • 2011-01-26
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多