2012-07-01 48 views
1

你如何只回应打印print_r的第一行?如何仅显示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; 

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

+0

是人物总是一样的,所以你可以只显示第一个这么多字符?另外,你是否必须使用print_r? – phpmeh

+0

不可以更改字符,因为它受用户输入限制。我认为print_r对于正确的顺序是必要的。 –

回答

3

如果我明白你想要做什么,输出的第一个值应该足够后仅增加了break;声明:

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

如果在$匹配的钥匙总是数字键,这个代码应该是足够了:

echo $matches[0]; 

否则,试试这个代码:

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

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

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

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