Adesso va meglio. Ad ogni periodo i prezzi vengono associati direttamente.
Codice PHP:
<?php
// Definisco le date di inizio e di fine di ciascun periodo
$iniz_stagione1 "2006-09-09"
$fine_stagione1 "2006-09-20"
$iniz_stagione2 "2006-09-21";
$fine_stagione2 "2006-10-10";
$iniz_stagione3 "2006-10-11";
$fine_stagione3 "2006-10-20";
$iniz_stagione4 "2006-10-21";
$fine_stagione4 "2006-10-31";

// Setto le mie costanti relative ai prezzi stagioniali
define("PREZZO_STAGIONE1",35);
define("PREZZO_STAGIONE2",40);
define("PREZZO_STAGIONE3",45);
define("PREZZO_STAGIONE4",30);

// Passo alla funzione inizio e fine periodo e il prezzo associato.
// Le chiavi saranno le date e i valori i rispettivi prezzi
function crea_Array($da,$a,$prezzo,$arr ''){
global 
$arr;
    for(
$i strtotime($da); $i<=strtotime($a); $i strtotime("+1 day",$i)) {
    
$arr[date('Y-m-d',$i)] = $prezzo;
    }
return 
$arr;
}

// Richiamo la funzione per crearmi l'array con tutte le date stagionali
$stagione   crea_Array($iniz_stagione1,$fine_stagione1,PREZZO_STAGIONE1);
$stagione   crea_Array($iniz_stagione2,$fine_stagione2,PREZZO_STAGIONE2);
$stagione   crea_Array($iniz_stagione3,$fine_stagione3,PREZZO_STAGIONE3);
$stagione   crea_Array($iniz_stagione4,$fine_stagione4,PREZZO_STAGIONE4);

echo 
'<pre>';
print_r($stagione);
echo 
'</pre>';

// Date inizio e fine abbonamento
$inizio_abb "2006-09-18"
$fine_abb   "2006-10-12";

// Creo l'array con tutte le date relative al periodo dell'abbonamento
$abbonamento crea_Array($inizio_abb,$fine_abb,0,$arr =array() );
$i 0;
foreach(
$abbonamento as $chiave => $valore) {
$nuovo[$i] = $chiave;
$i++;
}

echo 
'<pre>';
//print_r($abbonamento);
print_r($nuovo);
echo 
'</pre>';

function 
costo_Abbonamento(){
$totale 0;
global 
$nuovo,$stagione;
foreach(
$nuovo as $giorno){
// se il giorno dell'abbonamento corrisponde alla chiave dell'array stagionale aggiungo al totale
// il prezzo corrispondente   
      
if(array_key_exists($giorno,$stagione)) 
      
$totale+= $stagione[$giorno];
    }
return 
$totale;
}

echo 
costo_Abbonamento(); // nell'esempio 995 euro
//18-20 settembre           35 euro * 3 105
//21 settembre-10 ottobre 40 euro * 2 800
// 11-12 ottobre          45 euro * 2  90
// Totale                               995
?>