Jazzy 1012
asked on
Different output than wanted.
$find = '.5010.';
$dirname = '79';
if(!is_dir($dirname))
mkdir($dirname, 0777);
$directory_with_files = './';
$dh = opendir($directory_with_files);
$files = array();
while (false !== ($filename = readdir($dh)))
{
if(in_array($filename, array('.', '..')) || is_dir($filename))
continue;
$files[] = $filename;
}
foreach($files as $file)
{
//find only 5010 files
if(stripos($file, $find) !== false)
{
// open the 5010 file
$handle = fopen($file, "r");
$file_content = file_get_contents($file);
if ($handle) {
$header = '';
$name = '';
$footer = '';
$payor_blocks = array();
// determine if file has more than one payor
$payor_count = substr_count($file_content, 'N1*');
//if the file has more than one payor
if($payor_count > 1) {
//read the file line by line
$header_end = false;
$block_start = false;
$count = 1;
while (($line = fgets($handle)) !== false) {
//look for the first payor block
if(strpos($line, 'N1*') !== false || $block_start) {
$header_end = true; $block_start = true;
//see if the block finished
if(strpos($line, 'CAS~') !== false) {
$block_start = false;
$payor_blocks[$count] .= $line;
$count++;
}
$payor_blocks[$count] .= $line;
} else {
//append to the header
if($header_end) {
$footer .= $line."\n";
} else {
$header .= $line."\n";
}
}
}
//get payor blocks and create a file foreach payor
$new_files = array();
foreach($payor_blocks as $block) {
$filename = $file . "_" . $count;
$count++;
$new_files[] = array(
'name' => $filename,
'content' => $header."\n".$block."\n".$footer
);
//footer prints out after the first CAS and all the rest
}
echo "<pre>" . print_r($new_files, true) . "</pre>";
//loop through new files and create them
foreach($new_files as $new_file) {
//create file
$myfile = fopen($file, "w");
fwrite($myfile, $new_file['content']);
//close the file
fclose($myfile);
}
} else {
// DO what u were doing in script #1
while (($line = fgets($handle)) !== false)
{
$refid = 'REF';
if(stripos($line, $refid) !== false)
{
$refnumber = str_replace(array($refid, '~'), array('', ''), $line);
$refnumber = trim($refnumber);
if($refnumber != '')
{
$refnumber = '_'.$refnumber.'_';
$filerenamed = str_replace($find, $refnumber, $file);
copy($file, $dirname.'/'.$filerenamed);
}
echo $refnumber . "\n";
}
}
}
}
// DONE - close the file
fclose($handle);
}
}
The code above, I want it to read a file and split it into to, it splits them but doesn't create a file for each and i keep getting this warning: Notice: Undefined offset: 1 in /script2.php on line 62 Notice: Undefined offset: 2 in /script2.php on line 62
Im not sure why, also the N1* part shows the whole thing in one file and none of it in the second (i see this through my browser)
ASKER
Okay, this is the line that is line 62
$payor_blocks[$count] .= $line;
Which is line 56 in my snippet code
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
This could not have occurred on line 62 in the code snippet posted above because that line does not contain an array reference. When you post code here at E-E, please post the complete code snippet, so we can see how the line numbers in the code and the line numbers in the error messages are related!