0

デフォルトごとに配列があります:

array( 1=>1,2 =>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9 )

これで、たとえば次のように数値を変更する操作が可能になります。

array( 1=>1, 2=>1, 3=>3, 4=>1, 5=>1, 6=>6, 7=>7, 8=>8, 9=>9 )
--> changed the value of key 1, 2, 4 and 5

この後、次の結果が必要です

array( 1=>1, 2=1, 3=>2, 4=>1, 5=>1, 6=>3, 7=>4, 8=>5, 9=>6  )
--> changed the value of key 3, 6, 7, 8, 9 in the right order that no number is missing like the operation has done above.

そのグリッド3x3。位置1は1、位置2は2というように続きます。これで、データベースは、位置1、2、4、5が1と同じで脅威にさらされるように設定できます。したがって、データベースは1、1、3、1、1、6、7、8、9を送信します。 3は3ですが、2のフィールドである必要があります。また、6のフィールドはフィールド3である必要があります。

注:この操作では、配列内のすべての値を変更できます。たとえば、キー4、5、7、8の値

これどうやってするの?

4

1 に答える 1

1

最大数を格納する変数を作成します。次に繰り返す場合は、配列の数値がmaxよりも小さいかどうかを確認し、そうである場合は何もせず、maxより大きい場合は、3番目の配列に入れてmaxを増やします。

$max = 0; // maximum value
$array3 = array(); // output array

foreach($array2 as $key=>$element){ // iterate for all elements
  if($array2[$key] > $max){
    $max++;
    $array3[$key] = $max;
    }
  else
    $array3[$key]=1; // *
} // end foreach

それでマークされた行// *に毎回1を入れます。値が常に1である必要はないため、値が以前にあったかどうかを検索する必要がある場合があります。たとえば、のようなものを使用できますarray_search

于 2013-03-08T14:47:11.013 に答える