一次元配列:
$ ARR = [1,2,3,4,5,4,3,2,1,1,1,1 ]。 updateRepeat($ arrが)。
処理結果:
アレイ(12){[0] => INT(1)[1] => INT(2)[2] => INT(3)[3] => INT(4)[4] => INT(5) [5] => 列(4) "4(1)" [6] => 列(4) "3(1)" [7] => 列(4) "2(1)" [8] => ストリング(4) "1(1)" [9] => 列(4) "1(2)" [10] => 列(4) "1(3)" [11] => 列(4) " 1(4)」}
二次元配列:
$ ARR = [ [ '名前' => '233'、 'セックス' => 1]、 [ '名前' => '456']、 [ '名前' => 'ハハハ']、 [ '名前' => 'QWE']、 [ '名前' => '965']、 [ '名前' => '2333']、 [ '名前' => '233'、 'NUM' => 2]、 [ '名前' = > '笑']、 [ '名前' => '233'、 '性別' => 1]、 [ '名前' => '233'、 '性別' => 1]、 【 '名称' => '233'、 '性別' => 1]、 [ '名前' => '233'、 '性別' => 1 ] ]。
updateRepeat($ arrが、 '名');
処理結果:
アレイ(12){[0] => アレイ(2){[ "名前"] => 列(3) "233" [ "性別" => INT(1)} [1] => アレイ(1) {[ "名前"] => 列(3) "456"} [2] => アレイ(1){[ "名前"] => 列(6) "笑"} [3] => アレイ(1) {[ "名前"] => 列(3) "QWE"} [4] => アレイ(1){[ "名前"] => 列(3) "965"} [5] => アレイ(1) {[ "名前"] => 列(4) "2333"} [6] => アレイ(2){[ "名前"] =>文字列(6) "233(1)" [ "NUM"] => INT(2)} [7] => アレイ(1){[ "名前"] => 列(9) "笑(1)"} [8] => アレイ(2){[ "名前"] => 列(6) "233(2)" [ "性別"] => INT(1)} [ 9] => アレイ(2){[ "名前"] => 列(6) "233(3)" [ "性別"] => INT(1)} [10] => アレイ(2){[」名前"] => 列(6) "233(4)"["性別"] => INT(1)} [11] => アレイ(2){["名前"] => 列(6)" 233 (5)」[ "性別"] => INT(1)}}
コード:
// 指定されたフィールドの二次元アレイは、重複の値を変更する パブリック 関数 updateRepeat($ ARR、$フィールド) { $ newarr = 配列(); foreachの($ ARR AS $ K => $ V ) { IF(in_array($ Vを [ フィールド$ ]、$ newarr )) { $ newValueに = $この - > UpdateFieldを($ newarr、$ V [ $フィールド ]、$ V [ $フィールド]); // 値は、元の配列の修飾の値に更新するように繰り返される $ ARRを [ $ K ] [ $フィールド ] = $ newValueに; // 修飾重文アレイに繰り返される値の値 の$ newarr [ $ K ] = $ newValueに; } 他{ // 配列に重み値の繰返さない決意 の$ newarr [ $ K ] = $ V [ $分野]; } } 戻り $ ARRを; } // 繰り返し変化の一次元アレイ値 の公共 機能 updateRepeat1($ ARR ) { $ newarr = 配列(); foreachの($ ARR AS $ K => $ V ) { IF(in_array($ V、$ newarr )) { $ newValueに = $この - > UpdateFieldを(newarr $、$ V、$ V ); // 値は、元の配列の修飾の値に更新するように繰り返される $ ARR [ $ K ] = $ newValueにし; // 繰り返し値の値修飾重文配列に $ newarr[ $ K ] = $ newValueに; } 他{ //はアレイに重み値の繰返さない決意 の$ newarr [ $ K ] = $ V ; } } 戻り $ ARR ; } //は、プロセス値繰り返す パブリック 関数 UpdateFieldをを($ ARR、$ oldv、$ newv、$ NUM = 1 ) { // 重いので、再帰再判断を達成するため のIF(in_array($ newv、$ ARR、trueに)) { $ NEWVALUE = $ oldv。 '(' の$ NUM ')'。 。 $ newnum = $ NUM + 1 ; $ RES = $この - > UpdateFieldを($ arrが、$ oldv、$ NEWVALUE、$ newnum )。 } 他{ 返す $ newvを。 } を返す $解像度を。 }
単純なアレイ重み決意は、原則は値を更新するが繰り返された場合、それぞれが、値と前のマッチングを取った値のセットを取る、順次、アレイを横断するある値を検索します。
注in_array()第三引数、偽==試合、真の使用===試合デフォルト、あなたが完全に一致し使用していない場合は、エラーが整数の値を決定します。