【问题标题】:JSON decoded data in PHP ArrayPHP数组中的JSON解码数据
【发布时间】:2017-09-29 14:49:45
【问题描述】:

尝试访问已在 PHP 中进行 JSON 解码的数据,循环遍历数组并在我的视图中打印它,但是对于我尝试访问的数组部分,我不断收到非法字符串偏移错误。

当我对数组进行 var-dump 时,我可以看到从 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"]

【问题讨论】:

    标签: php arrays json codeigniter


    【解决方案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): ?>
    

    【讨论】:

    • 谢谢老兄!我不敢相信我错过了 - 感觉自己像个白痴:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多