【问题标题】:How to only show the first line of print print_r?如何只显示打印 print_r 的第一行?
【发布时间】:2012-07-01 16:52:50
【问题描述】:

如何只回显 print_r 的第一行?

更多信息:

我有这个 PHP 代码:

preg_match_all('/MbrDtlMain.php\?([^ ]+)>/i', $string, $matches);
foreach(end($matches) as $key=> $value){
    print print_r($value, 1).'<br>';
}

结果:

12567682
12764252
12493678
14739908

(或其他数字,取决于用户输入)

我试过了:

preg_match_all('/MbrDtlMain.php\?([^ ]+)>/i', $string, $matches);
foreach(end($matches) as $key=> $value){
    $id = print_r($value, 1).'<br>';
}
echo $id

但它会从列表中产生 1 个随机数。换句话说,只有在使用像' print print_r($value, 1).'&lt;br&gt;';' 这样的打印时才会显示结果。问题是我只想显示第一个有序的结果。好像:

$firstlineofnumbers = '12567682';
echo $firstlineofnumbers;

希望这是有道理的。谢谢(:

【问题讨论】:

  • 字符是否总是相同的,所以您可以只显示前这么多字符?另外,你必须使用 print_r 吗?
  • 字符不能改变,因为它取决于用户输入。而且我认为 print_r 是产生正确顺序所必需的。

标签: php string


【解决方案1】:

如果我理解您要做什么,只需在输出第一个值后添加 break; 语句就足够了:

foreach(end($matches) as $key=> $value){
    print print_r($value, true).'<br>'; // print_r() expects true, not 1
    break;
}

【讨论】:

    【解决方案2】:

    如果 $matches 中的键总是数字键,那么这段代码应该足够了:

    echo $matches[0];
    

    否则,试试这个代码:

    $keys = array_keys($matches);
    echo $matches[array_shift($keys)];
    

    $keys 将包含 $matches 的所有键。
    array_shift 将返回 $keys 的第一个值(第一个键)。
    所以最后一行会显示对应的值。

    如果只需要显示第一个元素,则无需遍历整个数组。

    【讨论】:

      【解决方案3】:
      preg_match_all('/MbrDtlMain.php\?([^ ]+)>/i', $string, $matches);
      $i=0;
      foreach(end($matches) as $key=> $value){
          $i++;
          if ($i == 1) {
            echo $value."<br />";
          }
      
      }
      

      这从变量$i 开始,每次匹配都会增加1。如果是$i == 1,那么它将回显$value

      【讨论】:

        猜你喜欢
        • 2020-11-25
        • 2014-03-16
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-23
        • 1970-01-01
        相关资源
        最近更新 更多