Я довольно зеленый, когда дело доходит до php, так что вот основной вопрос, на который я еще не нашел ответа.php array многомерное индексирование
Я извлекаю повторяющуюся информацию со страницы, выполняя соответствующее регулярное выражение следующим образом. Регулярное выражение имеет две группы захвата (...), поэтому массив $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?
Хорошо, так. (точка) является своего рода оператором конкатенации строк? – Maestro13
@ Maestro13: Да точно – rkosegi
И почему «$ m1 [$ i]» работает, но «$ matches [1] [$ i]» нет? – Maestro13