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 = 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 回答