打印所有$ match php

时间:2012-11-18 16:14:02

标签: php 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 ) ) 

我正在尝试在foreach循环中打印它们但只获得第一个字符。

以下是我正在尝试的内容:

$i = '0';

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

我哪里错了?

5 个答案:

答案 0 :(得分:3)

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

}

答案 1 :(得分:2)

尝试

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

由于$i已包含您的数组项,因此您不需要$val。如果您执行$val[$i],则表示您正在访问字符串$val中的某个字符。

答案 2 :(得分:1)

//它打印$ matches array

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

    }

答案 3 :(得分:1)

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

答案 4 :(得分: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 />';
}