1

你如何只回显 print 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 like 时显示' print print_r($value, 1).'<br>';'。问题是我只想显示第一个有序的结果。仿佛:

$firstlineofnumbers = '12567682';
echo $firstlineofnumbers;

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

4

3 回答 3

3

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

foreach(end($matches) as $key=> $value){
    print print_r($value, true).'<br>'; // print_r() expects true, not 1
    break;
}
于 2012-07-01T16:59:55.093 回答
1

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

echo $matches[0];

否则,请尝试以下代码:

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

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

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

于 2012-07-01T16:58:55.333 回答
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.

于 2012-07-01T16:59:30.873 回答