-2

以下に、PHPで作成されている多くの追加と値があります。

それはすべてうまくいきます!そしてそれはここで実際に見ることができます:http://universitycompare.com

EXCEPT-'$totalcost'を含むPHPの最初のセット。以下で作成した値を使用して合計を作成できない理由がわからないようです。

何か意見はありますか?

<?php
$totalcost = $totalcost2 + $totalcost3; 
$totalcost2 = $li444 + $tuitionTotal;
$totalcost3 = $li4 + $li44;
?>

<!-- WORKING OUT TOTAL TCE -->

<p>
<b class="TCE">
<?php echo $totalcost; ?>
<?php echo array_sum($a); ?>
</b> 
</p>

<!-- END OF WORKING OUT TOTAL TCE -->

<br /><br />
<h2>
Below is a a breakdown of the total cost of Education:
</h2>

<?php
$li2 = get_field('average_drinks_spenditure_per_night');
$li3 = ($li2 * 28) * 2.1;
$li4 = $li3 * 3;
?>

<div class="TCE">
<br />
<h2>Average spent on socialising</h2>
<ul class="TCE">
<li><span>Average drink cost</span>&nbsp;&nbsp;£<?php echo the_field('average_drink_price'); ?></li>
<li><span>Average drinks spenditure per night</span>&nbsp;&nbsp;£<?php echo $li2; ?></li>
<li><span>Average drinks spenditure for the year</span>&nbsp;&nbsp;£<?php echo $li3;?><!-- JAVA BIT --></li>
<li><span>Average drinks spenditure for 3 years</span>&nbsp;&nbsp;£<?php echo $li4;?><!-- JAVA BIT --></li>
</ul>

<?php
$li22 = (get_field('average_housing_costs_per_week') * 4 );
$li33 = $li22 * 12;
$li44 = $li33 * 3;
?>

<h2>Average spent on living costs</h2>
<ul class="TCE">
<li><span>Housing per week</span>&nbsp;&nbsp;£<?php echo the_field('average_housing_costs_per_week'); ?></li>
<li><span>Housing per month</span>&nbsp;&nbsp;£<?php echo $li22; ?></li>
<li><span>Housing per year</span>&nbsp;&nbsp;£<?php echo $li33; ?></li>
<li><span>Housing for 3 years</span>&nbsp;&nbsp;£<?php echo $li44; ?></li>
</ul>

<div class="clear"></div>   
<p><br /></p>

<?php
$li222 = (get_field('average_shopping_trip_price') * 2.25 );
$li333 = $li222 * 12;
$li444 = $li333 * 3;
?>

<h2>Average spent on food shopping</h2>
<ul class="TCE">
<li><span>Average shopping trip </span>&nbsp;&nbsp;£<?php echo the_field('average_shopping_trip_price'); ?></li>
<li><span>Average shopping for the month</span>&nbsp;&nbsp;£<?php echo $li222; ?></li>
<li><span>Average shopping for the year</span>&nbsp;&nbsp;£<?php echo $li333; ?></li>
<li><span>Average shopping for 3 years</span>&nbsp;&nbsp;£<?php echo $li444; ?></li>
</ul>

<?php
$tuitionClass = (get_field('tuition_fees') /28 );
$tuitionTotal = (get_field('tuition_fees') * 3 );
?>

<h2>Average spent on tuition</h2>
<ul class="TCE">
<li><span>Price per Week</span>&nbsp;&nbsp;£<?php echo $tuitionClass; ?></li>
<li><span>Average tuition fee</span>&nbsp;&nbsp;£<?php echo the_field('tuition_fees'); ?></li>
<li><span>Average tuition fee for 3 years</span>&nbsp;&nbsp;£<?php echo $tuitionTotal; ?></li>
</ul>
4

6 に答える 6

1

PHPスクリプトは上から下に実行されます。変数の値を定義する前に、変数を使用して計算することはできません。

于 2012-10-16T21:01:26.810 に答える
1

以前は合計を定義することができなかったように思われたので、最終的にそれを解決しました。それがそれを中継すると思った奇妙な理由、教訓を学びました!

<?php
// AVERAGE DRINK COSTS 
$li2 = get_field('average_drinks_spenditure_per_night');
$li3 = ($li2 * 28) * 2.1;
$li4 = $li3 * 3;

// HOUSING COSTS 
$li22 = (get_field('average_housing_costs_per_week') * 4 );
$li33 = $li22 * 12;
$li44 = $li33 * 3;

// SHOPPING COSTS 
$li222 = (get_field('average_shopping_trip_price') * 2.25 );
$li333 = $li222 * 12;
$li444 = $li333 * 3;

// TUITION FEES 
$tuitionClass = (get_field('tuition_fees') /28 );
$tuitionTotal = (get_field('tuition_fees') * 3 );

// PHP TCE 
$totalcost2 = $li444 + $tuitionTotal;
$totalcost3 = $li4 + $li44;
$totalcost = $totalcost2 + $totalcost3; 
?>

これは私が最後に使用したものであり、エコーするために必要な値の前に置いただけです。

于 2012-10-16T21:15:47.950 に答える
0

私が理解しているように、PHPインタープリターは、PHPファイルを1行ずつ手続き的に処理し、インタープリターによって解析されるときに変数をメモリーに割り当てます。まだ定義$totalcost2しておらず$totalcost3、それらを合計しようとすると、PHPインタープリターは値への参照を持たず、それらを合計することはできません。

この最初のコードブロックをページの下部に配置すると、期待どおりに機能すると思います。

于 2012-10-16T21:04:45.323 に答える
0

私はあなたの問題を理解しているかどうかわかりません。$ totalcost2(ひどい名前btw!)と$ totalcost3が計算される前に、 $ totalcost値を出力しようとしているようです...これらはスクリプトの下部でのみ設定されているため、その時点でのみ使用できます。これらの値をページの上部に印刷する場合は、すべてのhtmlを(クライアントにダンプするのではなく)文字列にバッファリングする必要があります。値を取得したら、それらをダンプしてからキャプチャします。ページの残りの部分のhtmlの文字列。それは理にかなっていますか?あなたの質問に取り組んでいますか?

于 2012-10-16T21:01:57.697 に答える
0

全体を定義した後、コンポーネントを定義します。

代わりに次のようになります。

$totalcost2 = $li444 + $tuitionTotal;
$totalcost3 = $li4 + $li44;
$totalcost = $totalcost2 + $totalcost3; 
//This line should only come after $totalcost2 and 3 were defined!
于 2012-10-16T21:02:09.490 に答える
0

それらが値を持つ前にそれらを追加します。

<?php
$totalcost2 = $li444 + $tuitionTotal;
$totalcost3 = $li4 + $li44;
$totalcost = $totalcost2 + $totalcost3; 
?>
于 2012-10-16T21:02:13.497 に答える