duancheng1955 2016-10-27 10:32
浏览 38
已采纳

性能:foreach循环中的is_numeric()和is_string()

I have a bunch of arrays in an array ex.

$array =
         array(
            array(/../),
            array(/../),
            array(/../),
            //upto 100-200 arrays
         );

After that, I will use foreach to echo all of them. There is some checking here whether the $key is is_numeric() or is_string(), for example:

array(
   'the_key_here_is_numeric',
   'string' => 'the key is string'
);

So I have a foreach like this:

foreach($array as $arr => $arrays) {
   foreach($arrays as $key => $value) {
      if(is_numeric($key)) {
         /.../
      }
      if(is_string($key)) {
         /../
      }
   }
   echo /../;
}

When I tested this using KCacheGrind, obviously the is_string() and is_numeric() will be used multiple times, my question is, will this affect the performance? If so, is there a better way to do this?

  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-27 10:34
    关注

    Just use else. Then condition will be check only once

    Not

    if(is_numeric($key)) {
             /.../
          }
          if(is_string($key)) {
             /../
          }
    

    But

      if(is_string($key)) {
         /../
      } else {
         /.../
      }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号