0

由于 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 ) ) 

我试图在 foreach 循环中打印它们,但只得到第一个字符。

这是我正在尝试的:

$i = '0';

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

我哪里错了?

4

5 回答 5

3

尝试

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

}
于 2012-11-18T16:16:25.797 回答
2

尝试

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

您不需要$iin 这里因为$val已经包含您的数组项。如果你这样做$val[$i],你正在访问字符串中的某个字符$val

于 2012-11-18T16:17:34.123 回答
1

//打印$matches数组的所有值

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

    }
于 2012-11-18T16:16:43.283 回答
1
foreach ($matches[0] as $val) {
    echo $val;
}
于 2012-11-18T16:19:22.983 回答
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 主体,并且 $value 设置为该数组项的值。使用您的代码只能看到第一个字符,因为 PHP 允许您使用数组语法从字符串中获取单个字符。长话短说,将您的代码更改为以下内容:

foreach ($matches[0] as $val) {
    echo $val . '<br />';
}
于 2012-11-18T16:20:49.340 回答