Я не могу собрать все совпадения в отдельные массивы, и я продолжаю получать смещение, как я могу это исправить? - PullRequest
1 голос
/ 18 марта 2012
$file = fopen("procinfo.txt", "r") or exit("Unable to open file!");
$proc =array();
$param=array();

while (!feof($file))

{
    $arr = fgets($file);
    $all=explode(",", "$arr");

    preg_match('/^#./', $all[0], $matches);// matches lines in an array that has a #
    $proc[] = $matches[0];

    preg_match('/^P./', $all[0], $matches);// matches lines in an array that has a P at the beggining
    $param [] = $matches[0];

}

fclose($file);

Я хочу иметь возможность собрать все совпадения в отдельные массивы, чтобы их было проще найти

1 Ответ

1 голос
/ 18 марта 2012

Если ваш код выдает предупреждение «Уведомление PHP: неопределенное смещение: 0 in ...», это происходит потому, что в некоторых случаях $ match равен array() (пустой массив), а индекс 0 не существует.

Полагаю, единственное, что вам может понадобиться - это изменить

$proc[] = $matches[0];

до

if (count($matches)) $proc[] = $matches[0];

и аналогичным образом изменить

$param[] = $matches[0];

до

if (count($matches)) $param[] = $matches[0];

Эти изменения не только избавят вас от предупреждений о смещении, но и предотвратят заполнение $proc и $param пустыми элементами, когда строка не совпадает.

...