2012-06-11 105 views
2

當我談到php時,我非常青澀,所以這裏有一個基本的問題,我還沒有找到答案。php array多維索引

我通過進行正則表達式匹配從頁面中提取重複信息,如下所示。正則表達式有兩個捕獲組(...),因此$matches數組的索引範圍從0(完整正則表達式值)到2(1和2是捕獲組值)。

<?php 
    $page = file_get_contents(url); 
    preg_match_all(regex-with-two-capturing-groups, $page, $matches); 
    $m1 = $matches[1]; 
    $m2 = $matches[2]; 
    for ($i=0; $i < sizeof($m1); $i++) { 
     echo ("<tr><td>$m1[$i]</td><td>$m2[$i]</td></tr>"); 
    } 
?> 

這工作得很好,但一開始我嘗試了較短的版本:

<?php 
    $page = file_get_contents(url); 
    preg_match_all(regex-with-two-capturing-groups, $page, $matches); 
    for ($i=0; $i < sizeof($matches[0]); $i++) { 
     echo ("<tr><td>$matches[1][$i]</td><td>$matches[2][$i]</td></tr>"); 
    } 
?> 

,但是這導致

<tr><td>Array[0]</td><td>Array[0]</td></tr> 
<tr><td>Array[1]</td><td>Array[1]</td></tr> 
<tr><td>Array[2]</td><td>Array[2]</td></tr> 
<tr><td>Array[3]</td><td>Array[3]</td></tr> 
<tr><td>Array[4]</td><td>Array[4]</td></tr> 
... 

這是爲什麼?
有沒有辦法在一個表達式中進行二維索引,而不必定義中間數組m1和m2?

回答

2

使用此代碼:

<?php 
    $page = file_get_contents(url); 
    preg_match_all(regex-with-two-capturing-groups, $page, $matches); 
    for ($i=0; $i < sizeof($matches[0]); $i++) { 
     echo ("<tr><td>".$matches[1][$i]."</td><td>".$matches[2][$i]."</td></tr>"); 
    } 
?> 

PHP文件:language.types.string.parsing

也看這裏:PHP: concatenation of multidimensional array elements

+0

好吧,就這樣。 (點)是一種字符串連接運算符? – Maestro13

+0

@ Maestro13:確切地說是 – rkosegi

+0

爲什麼「$ m1 [$ i]」工作,但「$匹配[1] [$ i]」不是? – Maestro13