如何只显示print_r的第一行?

时间:2012-07-01 16:52:50

标签: php string

如何只回显第一行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).'<br>';'的打印时显示。问题是我只希望显示第一个有序的结果。好像:

$firstlineofnumbers = '12567682';
echo $firstlineofnumbers;

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

如果$ matches中的键总是数字键,则此代码应该足够了:

echo $matches[0];

否则,请尝试以下代码:

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

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

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

答案 2 :(得分:0)

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