【问题标题】:PHP - Foreach loop only echoing first letter of stringPHP - Foreach 循环只回显字符串的第一个字母
【发布时间】:2014-05-30 14:26:56
【问题描述】:

我有一个如下所示的数组:

array(1) { 
    ["brookybear"]=> array(5) { 
        ["id"]=> int(20217894) 
        ["name"]=> string(10) "Brookybear" 
        ["profileIconId"]=> int(603) 
        ["summonerLevel"]=> int(30) 
        ["revisionDate"]=> float(1397388011000) 
    } 
}

当我 var_dump();它。我正在尝试使用 foreach 循环从中取出“名称”值。但是,当我回显它时,我只会得到“B”作为输出,而不是完整的 Brookybear。

这是我的 foreach 循环:

$url="APIURL";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
$array = json_decode($result, true);
foreach($array['brookybear'] as $champs)
{
echo $champs['name'];
}

【问题讨论】:

  • var_dump($champs) 在循环中显示了什么?
  • 你有一堆额外的curljson 的东西 - 你确定你显示的数组是你从json_decode($result, true) 得到的吗?如果是这样,您应该稍微减少您的问题。
  • @Ben int(20217894) string(10) "Brookybear" int(603) int(30) float(1397388011000)

标签: php arrays foreach


【解决方案1】:

看起来您正在循环“brookybear”项而不是父数组。

如果要查看所有$champs 中的所有names:

$array = json_decode($result, true);
foreach($array as $champs)
{
    echo $champs['name'];
}

或更清楚:

$champions = json_decode($result, true);
foreach($champions as $champ)
{
    echo $champ['name'];
}

【讨论】:

    【解决方案2】:

    为什么要使用循环来获取值?如果我这样做,我会简单地写:

    <?php
    if ( isset( $array['brookybear']['name'] ) ) {
        echo $array['brookybear']['name'];
    }
    

    【讨论】:

      【解决方案3】:

      如果第一个字符只显示在字符串中,你知道我现在是什么原因,

      确保上述脚本中的数组变量名称不同

      。例子

      $my_var = "My name is umair";
      

      下面你同样使用这个变量作为数组

      $my_var[0] = "My name is umair";
      

      现在,如果您回显数组 var,它将仅显示输出中的第一个字母是“M” 只需更改数组变量即可

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-03
        • 2014-03-01
        • 2022-06-19
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多