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 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 に答える