Jump to content

PHP function inside loop


lilmer

Recommended Posts

Hello Good day,

 

I've made a Loop functions on a php and inside there is another function of loop. I did that because I'm not good on looping (loop within the loop), but what happen is the output of the function is placing outside the table. I already check the Quotes(') or something, but still it is placing outside. Anyone can explain to me why?

 

 

function alphaCount()

{

for ($i=65; $i<=90; $i++)

{

echo char($i);

}

}

for($i=1;$i<=10;$i++){

echo '<td class="char-'.$i.'-'.$this->alphaCunt.'"> </td>';

}

Link to comment
https://forums.phpfreaks.com/topic/274382-php-function-inside-loop/
Share on other sites

The code is like this totally. .

 

so when i indicate this to a view page the output of the alphaCount() is not going inside the table row or outside the table.

 

 

 

 

public function alphaCount(){

for ($i=65; $i<=90; $i++) {

echo strtolower(chr($i));

}

}

 

public function dump(){

 

$target = $this->alphaCount();

 

$out = "<table id='sheet' class=\"$table_class\" cellspacing=0>";

if ($col_letters) {

$out .= "<thead>\n\t<tr>";

if ($row_numbers) {

$out .= "\n\t\t<th>&nbsp</th>";

}

for($i=1;$i<=$this->colcount($sheet);$i++) {

$style = " min-width:50px;width:" . ($this->colwidth($i,$sheet)*1) . "px;";

if ($this->colhidden($i,$sheet)) {

$style .= "display:none;";

}

$out .= "\n\t\t<th style=\"$style\">" .strtoupper($this->colindexes[$i]) . "</th>";

}

$out .= "</tr></thead>\n";

}

 

$out .= "<tbody>\n";

for($row=1;$row<=$this->rowcount($sheet);$row++) {

$rowheight = $this->rowheight($row,$sheet);

$row_class = " 'char-".$row. "-".$target." ' ";

$style = "height:" . ($rowheight*(4/3)) . "px;";

if ($this->rowhidden($row,$sheet)) {

$style .= "display:none;";

}

$out .= "\n\t<tr style=\"$style\">";

if ($row_numbers) {

$out .= "\n\t\t<th>$row</th>";

}

for($col=1;$col<=$this->colcount($sheet);$col++) {

// Account for Rowspans/Colspans

$rowspan = $this->rowspan($row,$col,$sheet);

$colspan = $this->colspan($row,$col,$sheet);

for($i=0;$i<$rowspan;$i++) {

for($j=0;$j<$colspan;$j++) {

if ($i>0 || $j>0) {

$this->sheets[$sheet]['cellsInfo'][$row+$i][$col+$j]['dontprint']=1;

}

}

}

if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) {

$style = $this->style($row,$col,$sheet);

if ($this->colhidden($col,$sheet)) {

$style .= "padding:1px 2px;display:none;";

}

$out .= "\n\t\t<td class=".$row_class."style=\"$style\"" . ($colspan > 1?" colspan=$colspan":"") . ($rowspan > 1?" rowspan=$rowspan":"") . ">";

$val = $this->val($row,$col,$sheet);

if ($val=='') { $val=" "; }

else {

$val = htmlentities($val);

$link = $this->hyperlink($row,$col,$sheet);

if ($link!='') {

$val = "<a href=\"$link\">$val</a>";

}

}

$out .= "<nobr>".nl2br($val)."</nobr>";

$out .= "</td>";

}

}

$out .= "</tr>\n";

}

$out .= "</tbody></table>";

return $out;

 

}

 

BTW: Thanks for the reply.

The following line suggests that you're expecting alphaCount() to return the results:

 

<?php
$target = $this->alphaCount();
?>

 

The problem is that the function echos the results to the screen instead of returning them.

 

 

<?php
public function alphaCount(){
    for ($i=65; $i<=90; $i++) {
         echo strtolower(chr($i));
    }
}
?>

 

You might want to review the manual for returning values.

http://www.php.net/m...ning-values.php

That depends; the code looks to be expecting a string.

 

<?php
$row_class = " 'char-".$row. "-".$target." ' ";
?>

 

The function could be modified to something like

 

<?php

public function alphaCount() {
    $output = '';
    for ($i=65; $i<=90; $i++) {
         $output .= chr($i);
    }
    return strtolower($output);
}
?>

 

Note that I moved the strtolower() function to the return statement so that it's only executed once versus 24 times. ;)

Now that I think about the function a little more, have you considered using range (http://php.net/manua...ction.range.php)? You could do something like

 

<?php
public function alphaCount() {
    return implode('', range('a', 'z'));
}
?>

 

If the string is always "abcdefghijklmnopqrstuvwxyz", you could just return the string.

 

<?php
public function alphaCount() {
    return 'abcdefghijklmnopqrstuvwxyz';
}
?>

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.