2012-11-18 136 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; 
}