首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法使用PHP中的数组生成HTML字符串

方法使用PHP中的数组生成HTML字符串
EN

Code Review用户
提问于 2019-03-12 17:02:31
回答 2查看 137关注 0票数 0

问题

方法getQuoteHTML使用从getQuoteParams方法返回的数组生成HTML。它们是大型类UpdateStocks的方法。

如果可能的话,你能不能帮助我用更快、更容易或更有效的方法来代替它们?

getQuoteHTML:

代码语言:javascript
复制
    /**
     * 
     * @return a large HTML string of current quote section
     */
    public static function getQuoteHTML($a){
      $i=UpdateStocks::getQuoteParams();
      $bt=' Quote: '.date('l, d F Y \⏱ H:i T',microtime(true)).'';
      $hs='';
      foreach($i as $k=>$p){
        $h='';
        if(isset($p["id"])&&!empty($a[$p["ky"]])){
          if(preg_match('/(^s-*)/i',$p["id"])==1){
            $r=rand(20,99);
            $h=$h.'';
              $h=$h.''.$p["lb"].': ';
              $h=$h.''.$a[$p["ky"]].'';
            $h=$h.'';
            $hs=$hs.$h;
          }elseif(preg_match('/(^d-*)/i',$p["id"])==1){
            $r=rand(20,99);
            $h=$h.'';
              $h=$h.''.$p["lb"].': ';
              $h=$h.''.money_format('%=9.4n',(double)$a[$p["ky"]]).'';
            $h=$h.'';
            $hs=$hs.$h;
          }elseif(preg_match('/(^v-*)/i',$p["id"])==1){
            $r=rand(20,99);
            $h=$h.'';
              $h=$h.''.$p["lb"].': ';
              $h=$h.''.money_format('%=*!#4.0n',(double)$a[$p["ky"]]).'';
            $h=$h.'';
            $hs=$hs.$h;
          }elseif(preg_match('/(^t-*)/i',$p["id"])==1){
            $r=rand(20,99);
            $h=$h.'';
              $h=$h.''.$p["lb"].': ';
              $h=$h.''.date('l, d F Y \⏱ H:i T \(P \U\T\C\)',(double)$a[$p["ky"]]/1000).'';
            $h=$h.'';
            $hs=$hs.$h;
          }elseif(preg_match('/(^p-*)/i',$p["id"])==1){
            $r=rand(20,99);
            $h=$h.'';
              $h=$h.''.$p["lb"].': ';
              $h=$h.''.money_format('%=*!#4.4n',(double)$a[$p["ky"]]).'%';
            $h=$h.'';
            $hs=$hs.$h;
          }else{
            $r=rand(20,99);
            $h=$h.'';
              $h=$h.''.$p["lb"].': ';
              $h=$h.''.$a[$p["ky"]].'%';
            $h=$h.'';
            $hs=$hs.$h;
          }
        } // isset
        $h='';
      }

      return ''.$bt.''.$hs.'';
    }

getQuoteParams:

除了ky之外,还可以更改$params数组,并且可以将附加的键/值添加到:

代码语言:javascript
复制
  /**
   * 
   * @return an array of parameters for stock quote from version 1 API at iextrading
   */
  public static function getQuoteParams(){
    $params=array(
        array(
          "id"=>"s-sy",
          "ky"=>"symbol",
          "lb"=>"Symbol",
        ),
        array(
          "id"=>"s-cn",
          "ky"=>"companyName",
          "lb"=>"Company",
        ),
        array(
          "id"=>"s-mk",
          "ky"=>"primaryExchange",
          "lb"=>"Primary Exchange Market",
        ),
        array(
          "id"=>"s-st",
          "ky"=>"sector",
          "lb"=>"Market Sector",
        ),
        array(
          "id"=>"d-op",
          "ky"=>"open",
          "lb"=>"Open Share Price [$]",
        ),
        array(
          "id"=>"t-ot",
          "ky"=>"openTime",
          "lb"=>"Open Time",
        ),
        array(
          "id"=>"d-cl",
          "ky"=>"close",
          "lb"=>"Close Share Price [$]",
        ),
        array(
          "id"=>"t-ct",
          "ky"=>"closeTime",
          "lb"=>"Close Time",
        ),
        array(
          "id"=>"d-hi",
          "ky"=>"high",
          "lb"=>"Current High Share Price [$]",
        ),
        array(
          "id"=>"d-lo",
          "ky"=>"low",
          "lb"=>"Current Low Share Price [$]",
        ),
        array(
          "id"=>"d-lp",
          "ky"=>"latestPrice",
          "lb"=>"Current Latest Share Price [$]",
        ),
        array(
          "id"=>"s-ls",
          "ky"=>"latestSource",
          "lb"=>"Data Source",
        ),
        array(
          "id"=>"t-lu",
          "ky"=>"latestUpdate",
          "lb"=>"Current Latest Update",
        ),
        array(
          "id"=>"v-lv",
          "ky"=>"latestVolume",
          "lb"=>"Current Latest Volume [V]",
        ),
        array(
          "id"=>"d-rp",
          "ky"=>"iexRealtimePrice",
          "lb"=>"Source Near-Real-Time Share Price [$]",
        ),
        array(
          "id"=>"v-rs",
          "ky"=>"iexRealtimeSize",
          "lb"=>"Source Near-Real-Time Size [V]",
        ),
        array(
          "id"=>"t-iu",
          "ky"=>"iexLastUpdated",
          "lb"=>"Source Latest Update",
        ),
        array(
          "id"=>"d-dp",
          "ky"=>"delayedPrice",
          "lb"=>"Delayed Share Price [$]",
        ),
        array(
          "id"=>"t-dt",
          "ky"=>"delayedPriceTime",
          "lb"=>"Delayed Share Price Time",
        ),
        array(
          "id"=>"d-ep",
          "ky"=>"extendedPrice",
          "lb"=>"Extended Share Price [$]",
        ),
        array(
          "id"=>"d-ec",
          "ky"=>"extendedChange",
          "lb"=>"Extended Dollar Change [$]",
        ),
        array(
          "id"=>"p-cp",
          "ky"=>"extendedChangePercent",
          "lb"=>"Extended Percent Change [%]",
        ),
        array(
          "id"=>"t-et",
          "ky"=>"extendedPriceTime",
          "lb"=>"Extended Share Price Time",
        ),
        array(
          "id"=>"d-pc",
          "ky"=>"previousClose",
          "lb"=>"Close Share Price in Previous Session [$]",
        ),
        array(
          "id"=>"d-ch",
          "ky"=>"change",
          "lb"=>"Share Price Change [$]",
        ),
        array(
          "id"=>"p-pr",
          "ky"=>"changePercent",
          "lb"=>"Share Price Change [%]",
        ),
        array(
          "id"=>"p-mp",
          "ky"=>"iexMarketPercent",
          "lb"=>"Source Market Share [%]",
        ),
        array(
          "id"=>"v-vl",
          "ky"=>"iexVolume",
          "lb"=>"Source Volume [V]",
        ),
        array(
          "id"=>"v-av",
          "ky"=>"avgTotalVolume",
          "lb"=>"Average Total Volume [V]",
        ),
        array(
          "id"=>"d-bp",
          "ky"=>"iexBidPrice",
          "lb"=>"Source Bid Price [$]",
        ),
        array(
          "id"=>"v-bs",
          "ky"=>"iexBidSize",
          "lb"=>"Source Bid Size [V]",
        ),
        array(
          "id"=>"d-ap",
          "ky"=>"iexAskPrice",
          "lb"=>"Source Ask Price [$]",
        ),
        array(
          "id"=>"v-as",
          "ky"=>"iexAskSize",
          "lb"=>"Source Ask Size [V]",
        ),
        array(
          "id"=>"d-cc",
          "ky"=>"marketCap",
          "lb"=>"Company Market Cap [$]",
        ),
        array(
          "id"=>"s-pe",
          "ky"=>"peRatio",
          "lb"=>"PE Ratio",
        ),
        array(
          "id"=>"d-wh",
          "ky"=>"week52High",
          "lb"=>"52-Week High [$]",
        ),
        array(
          "id"=>"d-wl",
          "ky"=>"week52Low",
          "lb"=>"52-Week Low [$]",
        ),
        array(
          "id"=>"p-yt",
          "ky"=>"ytdChange",
          "lb"=>"YTD Change",
        ),
   );
    return $params;
  }

HTML输出:

代码语言:javascript
复制
     Quote: Tuesday, 12 March 2019 ⏱ 12:08 EDT
    
        
            Symbol: AAPL
            Company: Apple Inc.
            Primary Exchange Market: Nasdaq Global Select
            Market Sector: Technology
            Open Share Price [$]: $180.0000
            Open Time: Tuesday, 12 March 2019 ⏱ 09:30 EDT (-04:00 UTC)
            Close Share Price [$]: $178.9000
            Close Time: Monday, 11 March 2019 ⏱ 16:00 EDT (-04:00 UTC)
            Current High Share Price [$]: $182.6700
            Current Low Share Price [$]: $179.3700
            Current Latest Share Price [$]: $181.4100
            Data Source: IEX real time price
            Current Latest Update: Tuesday, 12 March 2019 ⏱ 12:06 EDT (-04:00 UTC)
            Current Latest Volume [V]:  17,157,291
            Source Near-Real-Time Share Price [$]: $181.4100
            Source Near-Real-Time Size [V]:  **100
            Source Latest Update: Tuesday, 12 March 2019 ⏱ 12:06 EDT (-04:00 UTC)
            Delayed Share Price [$]: $181.7210
            Delayed Share Price Time: Tuesday, 12 March 2019 ⏱ 11:51 EDT (-04:00 UTC)
            Extended Share Price [$]: $181.4100
            Extended Share Price Time: Tuesday, 12 March 2019 ⏱ 12:06 EDT (-04:00 UTC)
            Close Share Price in Previous Session [$]: $178.9000
            Share Price Change [$]: $2.5100
            Share Price Change [%]:  ****0.0140%
            Source Market Share [%]:  ****0.0222%
            Source Volume [V]:  381,235
            Average Total Volume [V]:  27,155,838
            Source Bid Price [$]: $180.0000
            Source Bid Size [V]:  **100
            Source Ask Price [$]: $185.0000
            Source Ask Size [V]:  **500
            Company Market Cap [$]: $855,398,944,800.0000
            PE Ratio: 15.28
            52-Week High [$]: $233.4700
            52-Week Low [$]: $142.0000
            YTD Change:  ****0.1517%

JavaScript开关

代码语言:javascript
复制
/*switch display*/
s:function(z){
    var x,a;
    x=/(di-0)/i;
    if(x.test(z.d.nextElementSibling.attributes.getNamedItem('class').nodeValue)){a=1}else{a=0}
    switch (a){
        case 1:
            z.d.nextElementSibling.attributes.getNamedItem('class').nodeValue='di-2';
            break;
        case 0:
            z.d.nextElementSibling.attributes.getNamedItem('class').nodeValue='di-0';
            break;
        }
}

开关显示CSS

代码语言:javascript
复制
.di-0{display:none!important}.di-1{display:inline-block}.di-2{display:block}.di-3{display:grid}

彩色地图CSS

代码语言:javascript
复制
.r100,
r100 a {
    color: #FFFFFF
}

.b100,
.b100 a {
    background-color: #FFFFFF
}

.r101,
r101 a {
    color: #F8F8FF
}

.b101,
.b101 a {
    background-color: #F8F8FF
}

.r102,
r102 a {
    color: #F7F7F7
}

.b102,
.b102 a {
    background-color: #F7F7F7
}

.r103,
r103 a {
    color: #F0F0F0
}

.b103,
.b103 a {
    background-color: #F0F0F0
}

.r104,
r104 a {
    color: #F2F2F2
}

.b104,
.b104 a {
    background-color: #F2F2F2
}

.r105,
r105 a {
    color: #EDEDED
}

.b105,
.b105 a {
    background-color: #EDEDED
}

.r106,
r106 a {
    color: #EBEBEB
}

.b106,
.b106 a {
    background-color: #EBEBEB
}

.r107,
r107 a {
    color: #E5E5E5
}

.b107,
.b107 a {
    background-color: #E5E5E5
}

.r108,
r108 a {
    color: #E3E3E3
}

.b108,
.b108 a {
    background-color: #E3E3E3
}

.r109,
r109 a {
    color: #E0E0E0
}

.b109,
.b109 a {
    background-color: #E0E0E0
}

.r110,
r110 a {
    color: #858585
}

.b110,
.b110 a {
    background-color: #858585
}

.r111,
r111 a {
    color: #666666
}

.b111,
.b111 a {
    background-color: #666666
}

.r112,
r112 a {
    color: #545454
}

.b112,
.b112 a {
    background-color: #545454
}

.r113,
r113 a {
    color: #4D4D4D
}

.b113,
.b113 a {
    background-color: #4D4D4D
}

.r114,
r114 a {
    color: #474747
}

.b114,
.b114 a {
    background-color: #474747
}

.r115,
r115 a {
    color: #363636
}

.b115,
.b115 a {
    background-color: #363636
}

.r116,
r116 a {
    color: #333333
}

.b116,
.b116 a {
    background-color: #333333
}

.r117,
r117 a {
    color: #222222
}

.b117,
.b117 a {
    background-color: #222222
}

.r118,
r118 a {
    color: #1C1C1C
}

.b118,
.b118 a {
    background-color: #1C1C1C
}

.r119,
r119 a {
    color: #050505
}

.b119,
.b119 a {
    background-color: #050505
}

.r120,
r120 a {
    color: #EEEE00
}

.b120,
.b120 a {
    background-color: #EEEE00
}

.r121,
r121 a {
    color: #FFD700
}

.b121,
.b121 a {
    background-color: #FFD700
}

.r122,
r122 a {
    color: #EEC900
}

.b122,
.b122 a {
    background-color: #EEC900
}

.r123,
r123 a {
    color: #EAC80D
}

.b123,
.b123 a {
    background-color: #EAC80D
}

.r124,
r124 a {
    color: #FFC125
}

.b124,
.b124 a {
    background-color: #FFC125
}

.r125,
r125 a {
    color: #FFB90F
}

.b125,
.b125 a {
    background-color: #FFB90F
}

.r126,
r126 a {
    color: #EEAD0E
}

.b126,
.b126 a {
    background-color: #EEAD0E
}

.r127,
r127 a {
    color: #DAA520
}

.b127,
.b127 a {
    background-color: #DAA520
}

.r128,
r128 a {
    color: #BFA30C
}

.b128,
.b128 a {
    background-color: #BFA30C
}

.r129,
r129 a {
    color: #B78A00
}

.b129,
.b129 a {
    background-color: #B78A00
}

.r130,
r130 a {
    color: #FFA500
}

.b130,
.b130 a {
    background-color: #FFA500
}

.r131,
r131 a {
    color: #FF9912
}

.b131,
.b131 a {
    background-color: #FF9912
}

.r132,
r132 a {
    color: #ED9121
}

.b132,
.b132 a {
    background-color: #ED9121
}

.r133,
r133 a {
    color: #FF7F00
}

.b133,
.b133 a {
    background-color: #FF7F00
}

.r134,
r134 a {
    color: #FF8000
}

.b134,
.b134 a {
    background-color: #FF8000
}

.r135,
r135 a {
    color: #EE7600
}

.b135,
.b135 a {
    background-color: #EE7600
}

.r136,
r136 a {
    color: #EE6A50
}

.b136,
.b136 a {
    background-color: #EE6A50
}

.r137,
r137 a {
    color: #EE5C42
}

.b137,
.b137 a {
    background-color: #EE5C42
}

.r138,
r138 a {
    color: #FF6347
}

.b138,
.b138 a {
    background-color: #FF6347
}

.r139,
r139 a {
    color: #FF6103
}

.b139,
.b139 a {
    background-color: #FF6103
}

.r140,
r140 a {
    color: #32CD32
}

.b140,
.b140 a {
    background-color: #32CD32
}

.r141,
r141 a {
    color: #00C957
}

.b141,
.b141 a {
    background-color: #00C957
}

.r142,
r142 a {
    color: #43CD80
}

.b142,
.b142 a {
    background-color: #43CD80
}

.r143,
r143 a {
    color: #00C78C
}

.b143,
.b143 a {
    background-color: #00C78C
}

.r144,
r144 a {
    color: #1ABC9C
}

.b144,
.b144 a {
    background-color: #1ABC9C
}

.r145,
r145 a {
    color: #20B2AA
}

.b145,
.b145 a {
    background-color: #20B2AA
}

.r146,
r146 a {
    color: #03A89E
}

.b146,
.b146 a {
    background-color: #03A89E
}

.r147,
r147 a {
    color: #00C5CD
}

.b147,
.b147 a {
    background-color: #00C5CD
}

.r148,
r148 a {
    color: #00CED1
}

.b148,
.b148 a {
    background-color: #00CED1
}

.r149,
r149 a {
    color: #48D1CC
}

.b149,
.b149 a {
    background-color: #48D1CC
}

.r150,
r150 a {
    color: #63B8FF
}

.b150,
.b150 a {
    background-color: #63B8FF
}

.r151,
r151 a {
    color: #00B2EE
}

.b151,
.b151 a {
    background-color: #00B2EE
}

.r152,
r152 a {
    color: #1E90FF
}

.b152,
.b152 a {
    background-color: #1E90FF
}

.r153,
r153 a {
    color: #1C86EE
}

.b153,
.b153 a {
    background-color: #1C86EE
}

.r154,
r154 a {
    color: #1C86EE
}

.b154,
.b154 a {
    background-color: #1C86EE
}

.r155,
r155 a {
    color: #1874CD
}

.b155,
.b155 a {
    background-color: #1874CD
}

.r156,
r156 a {
    color: #436EEE
}

.b156,
.b156 a {
    background-color: #436EEE
}

.r157,
r157 a {
    color: #4169E1
}

.b157,
.b157 a {
    background-color: #4169E1
}

.r158,
r158 a {
    color: #3A5FCD
}

.b158,
.b158 a {
    background-color: #3A5FCD
}

.r159,
r159 a {
    color: #014B96
}

.b159,
.b159 a {
    background-color: #014B96
}

.r160,
r160 a {
    color: #EE7AE9
}

.b160,
.b160 a {
    background-color: #EE7AE9
}

.r161,
r161 a {
    color: #DA70D6
}

.b161,
.b161 a {
    background-color: #DA70D6
}

.r162,
r162 a {
    color: #BA55D3
}

.b162,
.b162 a {
    background-color: #BA55D3
}

.r163,
r163 a {
    color: #BF3EFF
}

.b163,
.b163 a {
    background-color: #BF3EFF
}

.r164,
r164 a {
    color: #B23AEE
}

.b164,
.b164 a {
    background-color: #B23AEE
}

.r165,
r165 a {
    color: #9B30FF
}

.b165,
.b165 a {
    background-color: #9B30FF
}

.r166,
r166 a {
    color: #836FFF
}

.b166,
.b166 a {
    background-color: #836FFF
}

.r167,
r167 a {
    color: #7A67EE
}

.b167,
.b167 a {
    background-color: #7A67EE
}

.r168,
r168 a {
    color: #9F79EE
}

.b168,
.b168 a {
    background-color: #9F79EE
}

.r169,
r169 a {
    color: #8968CD
}

.b169,
.b169 a {
    background-color: #8968CD
}

.r170,
r170 a {
    color: #FF6EB4
}

.b170,
.b170 a {
    background-color: #FF6EB4
}

.r171,
r171 a {
    color: #FF69B4
}

.b171,
.b171 a {
    background-color: #FF69B4
}

.r172,
r172 a {
    color: #EE3A8C
}

.b172,
.b172 a {
    background-color: #EE3A8C
}

.r173,
r173 a {
    color: #FF34B3
}

.b173,
.b173 a {
    background-color: #FF34B3
}

.r174,
r174 a {
    color: #FF1493
}

.b174,
.b174 a {
    background-color: #FF1493
}

.r175,
r175 a {
    color: #EE1289
}

.b175,
.b175 a {
    background-color: #EE1289
}

.r176,
r176 a {
    color: #CD2990
}

.b176,
.b176 a {
    background-color: #CD2990
}

.r177,
r177 a {
    color: #D02090
}

.b177,
.b177 a {
    background-color: #D02090
}

.r178,
r178 a {
    color: #C71585
}

.b178,
.b178 a {
    background-color: #C71585
}

.r179,
r179 a {
    color: #CD1076
}

.b179,
.b179 a {
    background-color: #CD1076
}

.r180,
r180 a {
    color: #FF4500
}

.b180,
.b180 a {
    background-color: #FF4500
}

.r181,
r181 a {
    color: #EE4000
}

.b181,
.b181 a {
    background-color: #EE4000
}

.r182,
r182 a {
    color: #FF4040
}

.b182,
.b182 a {
    background-color: #FF4040
}

.r183,
r183 a {
    color: #EE3B3B
}

.b183,
.b183 a {
    background-color: #EE3B3B
}

.r184,
r184 a {
    color: #EE2C2C
}

.b184,
.b184 a {
    background-color: #EE2C2C
}

.r185,
r185 a {
    color: #FF0000
}

.b185,
.b185 a {
    background-color: #FF0000
}

.r186,
r186 a {
    color: #DC143C
}

.b186,
.b186 a {
    background-color: #DC143C
}

.r187,
r187 a {
    color: #CD0000
}

.b187,
.b187 a {
    background-color: #CD0000
}

.r188,
r188 a {
    color: #B0171F
}

.b188,
.b188 a {
    background-color: #B0171F
}

.r189,
r189 a {
    color: #8B2323
}

.b189,
.b189 a {
    background-color: #8B2323
}

.r190,
r190 a {
    color: #FF6A6A
}

.b190,
.b190 a {
    background-color: #FF6A6A
}

.r191,
r191 a {
    color: #CD7054
}

.b191,
.b191 a {
    background-color: #CD7054
}

.r192,
r192 a {
    color: #CD6839
}

.b192,
.b192 a {
    background-color: #CD6839
}

.r193,
r193 a {
    color: #CD661D
}

.b193,
.b193 a {
    background-color: #CD661D
}

.r194,
r194 a {
    color: #C76114
}

.b194,
.b194 a {
    background-color: #C76114
}

.r195,
r195 a {
    color: #CD5B45
}

.b195,
.b195 a {
    background-color: #CD5B45
}

.r196,
r196 a {
    color: #CD4F39
}

.b196,
.b196 a {
    background-color: #CD4F39
}

.r197,
r197 a {
    color: #CD3333
}

.b197,
.b197 a {
    background-color: #CD3333
}

.r198,
r198 a {
    color: #CD2626
}

.b198,
.b198 a {
    background-color: #CD2626
}

.r199,
r199 a {
    color: #CD3700
}

.b199,
.b199 a {
    background-color: #CD3700
}

HTML随机颜色视图

EN

回答 2

Code Review用户

回答已采纳

发布于 2019-03-17 20:27:30

这里有很多事情要做,但我将集中在三个具体的问题,我发现在您的例子中最突出的,可读性,干燥和冗余。

可读性:

代码应尽可能容易阅读,应尽可能避免复杂性。很难读的代码是很难修改的,我们迟早都需要修改代码。

命名变量是很重要的,使用单个字符变量名称只是令人困惑。

不要重复你自己。重复编码的做法是在多个地方大量重复编码。

<#>冗余

不必要的代码

更改:

  • $a变量重命名为更合适的对象,例如$data (可读性)
  • UpdateStocks::getQuoteParams()移动到foreach中,删除$i变量(冗余)
  • 删除$k变量中的foreach (冗余)
  • 逆isset/空条件,这样就不需要将整个代码段包装到其中(可读性)
  • $p变量重命名为$parameters (可读性)
  • 简化数组参数,使用$id代替$parameter["id"] (可读性)
  • 虽然preg_match是可用的,但在这种特殊情况下,您只使用前两个字符,所以可以使用substr,因此更容易(可读性)
  • $hs变量重命名为更合适的东西,如$html (可读性)
  • 移动每个if/ each (DRY)中重复的向上/向下代码
  • 使用$lb而不是$parameter["lb"] (可读性)
  • 完全删除$h变量,不需要(冗余)
  • 用开关语句(可读性)替换if/elseif/elseif./ with
  • 定义与使用变量接近的变量,将$bt移到底部(可读性)

我做了一个gif,在示例中给您演示代码重构,大约需要10分钟。

注意:不要直接复制代码,它还没有经过测试,已经合成了模拟数据并对其进行了一些更改,这样我就可以运行它(例如更改日期)。这只是一个例子,你已经被警告了。:-)

https://gifyu.com/image/3nZB

票数 2
EN

Code Review用户

发布于 2019-03-19 06:36:08

一般的建议,我将适用于您的张贴代码:

  1. 避免产生单一用途的变量.
  2. 尽量避免代码行过长。
  3. 避免在代码中重复编写静态文本。
  4. 变量命名中的一些简洁性是可以接受的,但并不会损害可读性。
  5. 避免过度嵌套控制结构(例如ifforeach等),因为它们在读取代码时会增加水平滚动。
  6. 我讨厌开关块,但在这种情况下,这是一个明智的选择。将该过程抽象为一个新方法,可以使用return而不是通常的break,因此语法稍微紧凑一些。
  7. 尽量将处理与打印分开。

您似乎不需要验证$p["id"]的定义字符(S),甚至没有使用连字符。因此,您不需要调用任何函数来提取第一个(单字节)字符--您可以使用平方大括号语法通过其偏移量来访问一个字符(在本例中为0)。

我将尝试在html元素中保持一些选项卡的外观,而不会使线宽受到太大的影响。这可以通过多种方式实现。如果您或其他人选择以不同的方式声明$html的连接,我不会生气。

我可以想象$a的意思是array,但是最好给它一个描述性更强的名称。像$string$array$data$number这样的变量通常是重命名的好选择。脚本中通常有多个数组。

如果您的项目实际上需要对$p["id"]的领先子字符串进行更多的验证,那么在诉诸preg_函数之前,尝试使用非正则化工具(如substr() )。

未经测试的守则:

代码语言:javascript
复制
public static function formatQuoteValue($id, $a_ky) {
    switch ($id[0]) {
        case "s": return $a_ky;
        case "d": return money_format('%=9.4n', (double)$a_ky);
        case "v": return money_format('%=*!#4.0n', (double)$a_ky);
        case "t": return date('l, d F Y \⏱ H:i T \(P \U\T\C\)', (double)$a_ky/1000);
        case "p": return money_format('%=*!#4.4n', (double)$a_ky) . '%';
        default:  return $a_ky . '%';
    }
}

public static function getQuoteHTML($a) {
    $html = '' .
              '' .
                '  Quote: ' . date('l, d F Y \⏱ H:i T', microtime(true)) .
              '' .
              '' .
                '';

    foreach (UpdateStocks::getQuoteParams() as $param) {
        if (!isset($param["id"]) || empty($a[$param["ky"]])) {
            continue;
        }
        $class = 'di-1 t-21 m-1 br-3 p-2 b119 r1' . rand(20,99);
        $html .= '';
        $html .=   '' . $param["lb"] . ': ';
        $html .=   '' . UpdateStocks::formatQuoteValue($param["id"], $a[$param["ky"]]) . '';
        $html .= '';
    }

    $html .=     '' .
               '' .
             '';

    return $html;
}
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/215281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档