Jump to content

Resetting Arrays?


thomasw_lrd

Recommended Posts

I'm having trouble with some foreach statements.  I'm pretty sure I've narrowed it down to one foreach statement.  Not sure where to go from here. 

// output column headers
$rows=1;
$cols=0;
foreach ($colarr as $col){
	//echo "<pre>"; print_r($col); echo "</pre>";
	$text=str_replace("<br>", "\r\n", $col['desc']);
	$objPHPExcel->getActiveSheet()->SetCellValue($xlcols[$cols].$rows, $text);
	$objPHPExcel->getActiveSheet()->getStyle($xlcols[$cols].$rows)->getAlignment()->setWrapText(true);
	$objPHPExcel->getActiveSheet()->getStyle($xlcols[$cols].$rows)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
	$cols++;
}
$rows++;

// output data rows
if (isset($apptable['retarr']) && isset($apptable['retarr']['rs']) && count($apptable['retarr']['rs'])>0){
	foreach ($apptable['retarr']['rs'] as $row=>$r){
	if (is_numeric($row)){
		//echo '<pre>'.print_r($apptable).'</pre>';//exit;
			$cols=0;
			foreach ($r as $col=>$c){
				if (isset($colarr[$col])){
					//echo '<pre>'.print_r($colarr[$col]).'</pre>';//exit;
					//echo "this is xlcols: ".$xlcols[$cols].$rows; echo " ";
					//echo "This is col: ".$col; echo " ";
					//echo "This is r[col]: ".$r[$col]; echo "<br>";
					$objPHPExcel->getActiveSheet()->SetCellValue($xlcols[$cols].$rows, $r[$col]);
					$objPHPExcel->getActiveSheet()->getStyle($xlcols[$cols].$rows, $r[$col])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
					$cols++;
				}
			}
			$rows++;
		}
	}
}

 

The first section (output column headers) prints column names to an excel spreadsheet.  The next part (output data rows) puts the data in an excel spreadsheet.  The problem I have is that the data rows don't match the header columns.  I think this is because the array $colarr is not after the first foreach loop.  I've tried to

 

reset, asort, and sort to move it back to the beginning, but none of those worked.  And this  $reset_array_keys = array_values($numerically_indexed_array);

Any suggestions on what I should do? 

 

Output of print_r($colarr[$col]).

Array ( [dbcolumn] => tr_ngfg_statement_date [desc] => Ngfg Statement Date [align] => l [format] => [pdfalign] => L [pdfwidth] => [ajaxupdate] => y [ajaxdropdown] => [sort] => y [link] => [options] => [fttype] => none )

1

Array ( [dbcolumn] => tr_transaction_reconciled_y_or_n [desc] => Reconciled [align] => l [format] => [pdfalign] => L [pdfwidth] => [ajaxupdate] => [ajaxdropdown] => [sort] => y [link] => [options] => [fttype] => none )

1

Array ( [dbcolumn] => tr_priority_level [desc] => Priority Level [align] => l [format] => [pdfalign] => L [pdfwidth] => [ajaxupdate] => y [ajaxdropdown] => [sort] => y [link] => [options] => [fttype] => none )

1

Array ( [dbcolumn] => tr_id [desc] => ID [align] => l [format] => [pdfalign] => L [pdfwidth] => [ajaxupdate] => [ajaxdropdown] => [sort] => y [link] => [options] => [fttype] => none )

1

Array ( [dbcolumn] => tr_decisioned_date [desc] => Decisioned Date [align] => l [format] => [pdfalign] => L [pdfwidth] => [ajaxupdate] => [ajaxdropdown] => [sort] => y [link] => [options] => [fttype] => none ) 

Link to comment
Share on other sites

I finally fixed it.  Here is the code if anybody is interested.  I'm still not sure why it works like this.  Any ideas would be appreciated.

 

// output data rows
if (isset($apptable['retarr']) && isset($apptable['retarr']['rs']) && count($apptable['retarr']['rs'])>0){
	foreach ($apptable['retarr']['rs'] as $row=>$r){
		if (is_numeric($row)){
			//echo '<pre>'.print_r($r, true).'</pre>';exit;
			$cols=0;
			foreach ([b]$colarr[/b] as $col=>$c){
				if (isset($colarr[$col])){
					//echo '<pre>'.print_r($r, true).'</pre>';exit;
					$objPHPExcel->getActiveSheet()->SetCellValue($xlcols[$cols].$rows, $r[$col]);
					$objPHPExcel->getActiveSheet()->getStyle($xlcols[$cols].$rows, $r[$col])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
					$cols++;
				}
			}

 

The bolded $colarr used to be $r. 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.