-3

以下はphpスクリプトです。クリーンでもフレンドリーでもないため、サーバーがクラッシュする理由を説明する必要があります。サーバーでエラーログを表示しようとしていますが、クラッシュしてアクセスできません.... PHPのスキルはそれほど良くありません...どんな助けも大歓迎です:

  $checker = 0;
  function shuffleArray($myArray) {
  $value_count = array_count_values($myArray);

  $last_value = $myArray[count($myArray) - 1];
  unset($myArray[count($myArray) - 1]);
  $shuffle = array();
  $last = false;

  while (count($myArray) > 0) {
  $keys = array_keys($myArray);
  $i = round(rand(0, count($keys) - 1));
   while ($last === $myArray[$keys[$i]] ) {
    $i = round(rand(0, count($keys) - 1));
    echo "stuck";$checker++;
    if($checker>100){
        echo " Too many checks so die, and restart process ";
        exit;

    }
  }
  $shuffle[] = $myArray[$keys[$i]];
  $last = $myArray[$keys[$i]];
  unset($myArray[$keys[$i]]);
}

if ($last_value === $last) {
$i = 0;
foreach($shuffle as $key=>$value) {
     if ($value !== $last_value) {
        $i = $key;
        break;
    }
  }
  array_slice($shuffle, $i + 1, 0, $last_value);
  } else {
  $shuffle[] = $last_value;
  }

  return $shuffle;
  }

 $shuffleReel = (shuffleArray($virtualReel));
 function bob(){
if($checker>100){
    $checker = 0;
    shuffleArray();
    echo "bob";
    reset($myArray);
}
  }
4

2 に答える 2

1

二重引用符で囲まれた連想配列変数にアクセスする場合 (補間と呼ばれます)、それらを {} で囲む必要があります。例えば:

$reelFrame['value1'] = "{$ini_array['Symbol1']}";//notice I added {} around the array and encased Symbol1 in single quotes. The latter part is not necessary but recommended.

10行すべてに対してこれを行う必要があります。

于 2013-04-01T18:04:18.283 に答える
0

答えは、ループ内でエラー処理を行わないことです。そのため、サーバー リソースがすべて使い果たされてしまいました。これを修正するには、スクリプトが起動された場所から /Action スクリプトをフラッシュするために null を返す必要がありました。

       if($checker>100){
        $returnString = http_build_query("Error_1); // for flash to restart script
                     echo $returnString;
        exit;   
       }
于 2013-04-01T18:19:40.243 に答える