2012-11-18 137 views
0

我有我想要全部打印出來的foreach循環,但只獲得第一個字符以下的preg_match_all

Array ([0] => Array ([0] => $9.70 [1] => $10 [2] => $11.95 [3] => $0.49 [4] => $2.95 [5] => $2.95 [6] => $2.95 [7] => $2.95 [8] => $0.49 [9] => $9.70)) 

的結果。

這裏就是我想:

$i = '0'; 

foreach ($matches[0] as $val) { 
    echo $val[$i].'<br />'; 
    $i++; 
} 

我要去哪裏錯了?

回答

1

在PHP foreach工作比你想象的方式不同。讓我用下面的代碼解釋:

$matches = array('One', 'Two', 'Three'); 
foreach ($matches as $value) { 
    // The following code is called once for every array item, and $value is set to that array item 
    echo $value . '<br />'; 
} 

該代碼給出了以下的輸出:

One 
Two 
Three 

這是因爲在foreach身體的每個數組項目調用一次,和$值設爲該數組項的值。使用您的代碼只能看到第一個字符,因爲PHP允許您使用數組語法從字符串中獲取單個字符。長話短說,改變你的代碼如下:

foreach ($matches[0] as $val) { 
    echo $val . '<br />'; 
} 
3

嘗試

foreach ($matches[0] as $val) { 
    echo $val.'<br />'; 

} 
1

//這是打印的$所有值匹配陣列

foreach ($matches[0] as $val) 
    { 
     echo $val.'<br />'; 

    } 
+0

謝謝,但多數民衆贊成在錯 - 應該是$匹配[0] –

2

嘗試

foreach ($matches[0] as $val) { 
    echo $val.'<br />'; 
} 

你不需要在這裏$i$val已經包含你的數組項目。如果你做$val[$i]你正在訪問字符串$val中的某個字符。

1
foreach ($matches[0] as $val) { 
    echo $val; 
}