В моем проекте Symfony2, я в настоящее время использую следующее за петлю:preg_match ошибки для петли с PHPExcel
$blockCells = $worksheet->rangeToArray($firstRow.':'.$lastRow);
foreach ($blockCells as $cell) {
$newContent = $cell[0];
// 2. RETRIEVE FOLDER ID
$re = '/^[^_]+(?=_)/';
preg_match($re,$cell[0], $_myid);
$output->writeln('ID: '.$_myid[0]);
$activesheet->setCellValue('F'.$counter, $_myid);
$counter +=1;
}
}
Но я получаю следующее сообщение об ошибке:
[Symfony\Component\Debug\Exception\ContextErrorException]
Warning: preg_match() expects parameter 2 to be string, array given
Только тогда, когда скрывая setCellValue, для цикла, кажется, работает хорошо. Поэтому кажется, что PHPExcel сталкивается с preg_match PHP.
У кого-нибудь есть идея, почему это происходит и как я могу это решить?
UPDATE (упрощенный код)
код выше, дает следующий вывод в консоли:
ID: 10
После чего он будет бросать ошибку. Другими словами, цикл for запускается один раз, затем в конце, почти магически, он снова запускает цикл for без фактического выполнения его и останавливается из-за ошибки.
Убедитесь, что переменная '$ _content' в' preg_match ($ re, $ _ content, $ _myid); 'и' preg_match ($ re, $ _content, $ my_match); 'не является массивом. PHP думает, что это так, и именно поэтому вы получаете эту ошибку. – Quixrick
как Quixrick сказал, вы наверняка даете массив по строке 8. – MouradK
Вы пробовали комментировать весь шаг 8, а затем раскомментировать их один за другим, чтобы узнать, что вызывает проблему? – qooplmao