プログラムはコーディングされた通りに動きますし、
そのためには過不足なくコーディングする必要があります。
まずは、どういうことをさせたいのかまとめましょう。例えば
ゴールになるまで繰り返す
サイコロをふる
出目を表示する
現在位置を更新する
ゴールした手数を表示する
これを PHP で表現すると、例えばこんなかんじ
php
1<?php
2$x = 0;
3$i = 0;
4while ($x < 40) {
5 $i++;
6 $s = rand(1,6);
7 echo $i . "回目=" . $s . "\n";
8 $x += $s;
9}
10echo "合計" . $i . "回でゴールしました";
11?>
きびしいいいかたですが、中身は自分でひもといてください。
また、今回くらいのものでは必要ありませんが、コーディング量が多くなると役割分担をさせて分かりやすくすることもあります。参考までにこんなかんじ
php
1<?php
2function getdata($goal=40, $min=1, $max=6) {
3 $r = array();
4 $x = 0;
5 $i = 0;
6 while ($x < $goal) {
7 $i++;
8 $s = rand($min, $max);
9 $r[$i] = $s;
10 $x += $s;
11 }
12 return $r;
13}
14
15function output($data) {
16 foreach ($data as $k=>$v) {
17 echo $k . "回目=" . $v . "\n";
18 }
19 echo "合計" . $k . "回でゴールしました";
20}
21
22output(getdata());
23?>
ある程度分かるようになるまではがむしゃらにトライする必要があるように思います。そのためにも何かモチベーションを高めるものがあった方がいいでしょうな。:-)