再開:
PHP はサーバー側の言語であるため、どのブラウザーを使用しても問題ないと思っていましたが、どうやらそうではないようです。Google Chrome しか使っていませんでした。
ローカル マシンに WAMP をインストールしたので、ローカルでテストして、共有ホスティング アカウントと同じように動作するかどうかを確認できます。両方のコードは、本来あるべき方法で機能しました (Chrome で気をつけてください)。次に、共有ホスティングでまったく同じコードを調べました.1つは機能し、もう1つは機能しませんでした.
共有ホスティング サポートに電話したところ、問題を再現しようとしたところ、見つからないと言われました。それで、私はFirefoxとIEで試してみました.WAMPと同じように、両方で完全に機能しました。
これはまだ私にはあまり意味がありません。よく知られているホスティング会社との共有ホスティング アカウントで PHP 5.3 を使用していますが、コードを実際にトラブルシューティングできないため、どこにも行きません。彼らは問題を再現できますが、その理由については答えられません。今後数週間のうちに詳細を調べて、最新情報を投稿するつもりです。
私がやろうとしていることはこれです:
- 数値の範囲を生成する
- それらをランダムな順序にシャッフルします
- ランダムに並べられた数字の配列をセッション配列にコピーします
- 配列の最初の値を取得し、その値を削除して、すべての値を 1 つ下にシフトします
これが私の問題です:
使用array_shift();
してみましたが、最初の実行では問題なく動作しましたが、コードを実行するたびに最初の 2 つの要素が削除されました。
何が起こっているのかをテストするために、最初に配列を印刷してarray_shift();
から、配列を再度印刷して何が起こったのかを確認しました。
予想された結果:
実行 #1:
[0]=>5 [1]=>2 [2]=>1 [3]=>4 [4]=>3 //print_r($array);
//execute array_shift($array);
[0]=>2 [1]=>1 [2]=>4 [3]=>3 //print_r($array);
実行 #2:
[0]=>2 [1]=>1 [2]=>4 [3]=>3 //print_r($array);
//execute array_shift($array);
[0]=>1 [1]=>4 [2]=>3 //print_r($array);
実績:
実行 #1:
[0]=>5 [1]=>2 [2]=>1 [3]=>4 [4]=>3 //print_r($array);
//execute array_shift($array);
[0]=>2 [1]=>1 [2]=>4 [3]=>3 //print_r($array);
実行 #2:
[0]=>1 [1]=>4 [2]=>3 //print_r($array);
//execute array_shift($array);
[0]=>4 [1]=>3 //print_r($array);
私の問題 (続き)
そこで、array_shift($array); の代わりにreset($array);
, unset($array[0]);
, andを使用してみました。array_splice($array,1,0);
そしてそれはうまくいきました!次に、それらを並べて比較してコードをクリーンアップしようとしましたが、今では互いに反対のことをしています。場合によっては、リセット、設定解除、および array_shift; 一度呼び出されると、配列内の最大 7 つのセルをジャンプすることさえできます。array_shift();
今は思い通りに機能していますが、その理由を知りたいです。それは私を夢中にさせています!誰かが私を助けてくれたら、とても感謝しています。
コード ダンプ:
アンセット、リセット、スプライス
<?php
session_start();
$min = A;
$max = S;
if((!isset($_SESSION['image'])) || ($_SESSION['image'] == null))
{
$numbers = range($min, $max); //set a range for all images
shuffle($numbers); //shuffle the order for randomness
$_SESSION['image'] = $numbers;
echo "<br />Current value: " . $_SESSION['image'][0] . "<br />";
print_r($_SESSION['image']);
reset($_SESSION['image']);
unset($_SESSION['image'][0]);
array_splice($_SESSION['image'],1,0);
echo "<br />New value: " . $_SESSION['image'][0] . "<br />";
echo "<br />1st exec<br />";
}
else
{
echo "<br />Current value: " . $_SESSION['image'][0] . "<br />";
print_r($_SESSION['image']);
reset($_SESSION['image']);
unset($_SESSION['image'][0]);
array_splice($_SESSION['image'],1,0);
echo "<br />New value: " . $_SESSION['image'][0] . "<br />";
echo "<br />2nd exec<br />";
}
?>
シフト
<?php
session_start();
$min = A;
$max = S;
if((!isset($_SESSION['id2'])) || ($_SESSION['id2'] == null))
{
$numbers = range($min, $max); //set a range for all images
shuffle($numbers); //shuffle the order for randomness
$_SESSION['id2'] = $numbers;
echo "<br />Current value: " . $_SESSION['id2'][0] . "<br />";
print_r($_SESSION['id2']);
array_shift($_SESSION['id2']);
echo "<br />New value: " . $_SESSION['id2'][0] . "<br />";
echo "<br />1st execution<br />";
}
else
{
echo "<br />Current value: " . $_SESSION['id2'][0] . "<br />";
print_r($_SESSION['id2']);
array_shift($_SESSION['id2']);
echo "<br />New value: " . $_SESSION['id2'][0] . "<br />";
echo "<br />2nd execution<br />";
}
?>