【问题标题】:PHP array only prints first letter of each itemPHP数组只打印每个项目的第一个字母
【发布时间】:2011-05-18 19:56:40
【问题描述】:

下面的代码只打印每个数组项的第一个字母。这让我很困惑。

require_once 'includes/global.inc.php';
print_r($site->bookmarkTags(1));

$index = 0;
foreach ($site->bookmarkTags(1) as $tag) {
    echo $tag['$index'];
    $index = $index + 1;
}

print_r 返回:

Array ( [0] => Wallpapers [1] => Free )

循环:

WF

【问题讨论】:

    标签: arrays loops printing


    【解决方案1】:

    尝试回显 $tag,而不是 $tag['$index']

    由于您使用的是 foreach,因此该值已经从数组中获取,并且当您发布 $tag['$index'] 时,它将从 '$index' 位置打印字符:)

    【讨论】:

    • 为什么 PHP 甚至会这样做......或者更确切地说是这样做。我知道他们在 5.4+ 中修复了它。
    【解决方案2】:

    看来您已经尝试做 foreach 已经在做的事情了...
    问题是您实际上是在回显非数组的 $index 字母,因为 foreach 已经在做您似乎期望 $index = $index+1 做的事情:

    require_once 'includes/global.inc.php';
    print_r($site->bookmarkTags(1));
    
    $index = 0;
    foreach ($site->bookmarkTags(1) as $tag) {
        echo $tag; // REMOVE [$index] from $tag, because $tag isn't an array
        $index = $index + 1; // You can remove this line, because it serves no purpose
    }
    

    【讨论】:

      【解决方案3】:
      require_once 'includes/global.inc.php';
      
      // Store the value temporarily instead of
      // making a function call each time
      $tags = $site->bookmarkTags(1);
      foreach ($tags as $tag) {
          echo $tag;
      }
      

      这应该可以。问题可能是因为您在每次迭代时都调用函数,而不是临时存储值并对其进行循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 2022-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多