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
https://forums.phpfreaks.com/topic/257890-resetting-arrays/
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
https://forums.phpfreaks.com/topic/257890-resetting-arrays/#findComment-1322077
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.