php数组多维索引

标签 php arrays preg-match-all

我对 php 很陌生,所以这是一个我还没有找到答案的基本问题。

我通过执行正则表达式匹配从页面中提取重复信息,如下所示。正则表达式有两个捕获组 (...),因此 $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?

最佳答案

使用此代码:

<?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

关于php数组多维索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10979763/

相关文章:

php - 如何更正此正则表达式以捕获 PHP 中的所有重复参数组?

php - 如何在 PHP 中使用正则表达式查找完全匹配项?

javascript - 消息从外部网页传递到 Chrome 插件

php - 重定向回来之前暂停页面

java - 比较数组 - 方法中的累加器不会递增

c++ - 如何可视化这些没有出现的数字。 (C++)

php - 使用php从数据库中获取数百万条记录

php - 无法在 7.2 版 UBUNTU 上安装 PHP GD

java - 包含用于参数传递的方法/函数的数组

php - 如何使用php获取字符串中以 '#'开头的单词?