2016-10-27 6 views
-1

У меня есть множество массивов в массиве ex.Производительность: is_numeric() и is_string() в цикле foreach

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

После этого, я буду использовать foreach для echo все из них. Там некоторая проверка здесь ли $key является is_numeric() или is_string(), например:

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

Так что у меня foreach так:

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

Когда я проверил это с помощью KCacheGrind, очевидно is_string() и is_numeric() будет использоваться несколько раз, мой вопрос, повлияет ли это на производительность? Если это так, есть ли лучший способ сделать это?

+0

почему авансовый голос? –

+0

Потому что некоторые люди здесь любят раздавать голоса именно так. Вы должны привыкнуть к этому :( – nospor

+0

Да, подумал, по крайней мере, прежде чем они это сделают, скажите что-нибудь, как может новичок, как я, получить помощь, когда кому-то нравится его/ее роуминг здесь. Они еще не помогают им сделайте это –

ответ

0

Просто используйте еще. Тогда условие будет проверять только один раз

Не

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

Но

if(is_string($key)) { 
    /../ 
    } else { 
    /.../ 
    } 
+0

Хорошо, что я понимаю вашу точку зрения, но у меня все еще есть вопрос (ы), на которые не ответил, очевидно, что в вашем коде 'is_string()' будет вызываться много раз, '' is_string() 'будет влиять на производительность, если она вызвана много раз? –

+0

Существует только макс 200 итераций, так что все будет хорошо. Теперь мы уменьшили половину этого IFs;) Кроме того, что вы хотите с помощью этих ключей? Может быть, есть лучшее решение – nospor

+0

Массивы могут пройти более 200, да, ваш ответ, кажется, что-то уменьшает, я использую это для генерации 'html-тегов' и' атрибутов'. –