0

まだ直接的な答えを見つけることができませんでした..私の配列 $sitematches:

if (preg_match('/<start>(.*?)<finish>/s', $source, $matches)) {
    if (preg_match_all('/<a\s[^>]*href=\"([^\"]*)\"[^>]*>(.*)<\/a>/siU', $matches[1], $sitematches)); {
    print_r($sitematches);
    }
}

生成:

Array
(
    [0] => Array
        (
            [0] => <A HREF="http://site1.com">aaa</A>
            [1] => <A HREF="http://site2.com">bbb</A>
            [2] => <A HREF="http://site3.com">ccc</A>
            [3] => <A HREF="http://site4.com">ddd</A>
        )

    [1] => Array
        (
            [0] => http://site1.com
            [1] => http://site2.com
            [2] => http://site3.com
            [3] => http://site4.com
        )

    [2] => Array
        (
            [0] => aaa
            [1] => bbb
            [2] => ccc
            [3] => ddd
        )

)

どのように出力できますか:

1 - aaa - http://site1.com
2 - bbb - http://site2.com
3 - ccc - http://site3.com
4 - ddd - http://site4.com
4

2 に答える 2

1
for ($i = 0; $i < count($sitematches[0]); $i++)
    print "$i - {$sitematches[2][$i]} - {$sitematches[1][$i]}\n";

サイズ (count($sitematches[0])) を取得してから、配列をループします。

于 2013-04-06T11:46:26.183 に答える
0

foreach の別の可能性は次のとおりです。

foreach ($sitematches[1] as $key => $url)
   print "$key - {$sitematches[2][$key]} - $url\n";

ただし、少なくとも 1 つの直接配列アクセスが必要です。

于 2013-04-06T12:02:24.740 に答える