配列は、重鎖および更新、重複値を宣告します

一次元配列:

$ 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 
        { 
            IFin_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 
        { 
            IFin_array$ V$ newarr ))
            { 
                $ newValueに = $この - > UpdateFieldを(newarr $$ V$ V );
                 // 値は、元の配列の修飾の値に更新するように繰り返される
                $ ARR [ $ K ] = $ newValueにし;
                 // 繰り返し値の値修飾重文配列に
                $ newarr[ $ K ] = $ newValueに; 
            } {
                 //はアレイに重み値の繰返さない決意
                の$ newarr [ $ K ] = $ V ; 
            } 
        } 
        戻り $ ARR ; 
    } 
    //は、プロセス値繰り返す
    パブリック 関数 UpdateFieldをを($ ARR$ oldv$ newv$ NUM = 1 
    { 
        // 重いので、再帰再判断を達成するため
        のIFin_array$ newv$ ARRtrueに))
        { 
            $ NEWVALUE = $ oldv。 '(' の$ NUM ')'。 $ newnum = $ NUM + 1 ;
            $ RES = $この - > UpdateFieldを($ arrが$ oldv$ NEWVALUE$ newnum )。
        } {
             返す $ newvを
        } 
        を返す $解像度を
    }

単純なアレイ重み決意は、原則は値を更新するが繰り返された場合、それぞれが、値と前のマッチングを取った値のセットを取る、順次、アレイを横断するある値を検索します。

注in_array()第三引数、偽==試合、真の使用===試合デフォルト、あなたが完全に一致し使用していない場合は、エラーが整数の値を決定します。

おすすめ

転載: www.cnblogs.com/yuanshen/p/12082994.html