尝试访问已在PHP中进行JSON解码的数据,循环遍历数组并在我的视图中打印它,但是我仍然在尝试访问的数组部分中遇到非法的字符串偏移错误。
当我对数组进行var转储时,我可以看到从api中提取的数据,但由于某种原因,当我尝试访问它时,这个错误会一直被抛出。下面的代码(使用codeigniter):
模型
function getAllPokemon() {
$url = 'http://pokeapi.co/api/v2/pokemon/?limit=151';
$response = file_get_contents($url);
$allPokemonData = json_decode($response, true);
return $allPokemonData;
}
控制器
public function index()
{
$data['thepokemon'] = $this->pokemon_model->getAllPokemon();
$this->load->view('template/header');
$this->load->view('home', $data);
$this->load->view('template/footer');
}
视图
<?php foreach($thepokemon as $poke): ?>
<p><?php echo $poke['name']; ?></p>
<?php endforeach; ?>
如果我按照以下方式做某事:
<?php foreach($thepokemon as $poke): ?>
<p><?php echo $poke[2]['name']; ?></p>
<?php endforeach; ?>
它将在数组中打印该索引的名称,但仍会抛出错误。
任何帮助都会很棒!提前谢谢。
var_dump
的例子:
array(4) { ["count"]=> int(811) ["previous"]=> NULL ["results"]
答案 0 :(得分:1)
你有这个:
array(4) {
["count"]=> int(811)
["previous"]=> NULL
["results"]=> array(151) {
[0]=> array(2) {
["url"]=> string(36) "https://pokeapi.co/api/v2/pokemon/1/"
["name"]=> string(9) "bulbasaur"
}
[1]=> array(2) {
["url"]=> string(36) "https://pokeapi.co/api/v2/pokemon/2/"
["name"]=> string(7) "ivysaur"
}
所以循环应该是:
<?php foreach($thepokemon['results'] as $poke): ?>