No puedes hacer:
$variable="algo if(codigo) .. bablaabl";
Es decir .. no puedes mezclar código que de su ejecución de una cierta salida .. (echo algo ..)
Tienes que usar la misma técnica de ir concatenando sobre una variable todo lo que generes .. en tu caso lo de la función.
Código PHP:
$html= "
for ($i=0;$i<$this->num_productos;$i++){
if($this->array_id_prod[$i]!=0){
<tr>
<td class='txt3p' height='30'> . $this->array_familia_prod[$i] . </td>
<td class='txt3p' height='30'> . $this->array_producto_prod[$i] . </td>
<td class='txt3p' height='30'> . $this->array_referencia_prod[$i] . </td>
<td class='txt3p' height='30'> . $this->array_articulo_prod[$i] . </td>
<td class='txt3p' height='30' align='center'> . $this->array_precio_prod[$i] . </td>
<td class='txt3p' height='30' align='center'> . $this->array_cantidad_prod[$i] . </td>";
if($this->array_familia_prod[$i]=='Material Oficina')
{
if($this->array_cantidad_prod[$i]<=1)
{
$descuento='0';
}
else if($this->array_cantidad_prod[$i]>=2 and $this->array_cantidad_prod[$i]<=4)
{
$descuento='2';
}
else if($this->array_cantidad_prod[$i]>=5 and $this->array_cantidad_prod[$i]<=9)
{
$descuento='4';
}
else if($this->array_cantidad_prod[$i]>=10 and $this->array_cantidad_prod[$i]<=18)
{
$descuento='8';
}
else if($this->array_cantidad_prod[$i]>=19 and $this->array_cantidad_prod[$i]<=24)
{
$descuento='10';
}
else if($this->array_cantidad_prod[$i]>=25 and $this->array_cantidad_prod[$i]<=35)
{
$descuento='11';
}
else if($this->array_cantidad_prod[$i]>=36)
{
$descuento='15';
}
}
else
{
$descuento='0';
}
$html .="el resto .. ";
De hecho . .ese código que decide el valor de $descuento .. no tendría por qué estar ahí . .entre médio de la "salida" que dás o generas . .puede estar perfectamente antes de la definición de $html ..
Un saludo,