性能:foreach 循环中的 is_numeric() 和 is_string()
Posted
技术标签:
【中文标题】性能:foreach 循环中的 is_numeric() 和 is_string()【英文标题】:Performance: is_numeric() and is_string() in a foreach loop 【发布时间】:2016-10-27 10:32:13 【问题描述】:我在一个数组ex中有一堆数组。
$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()
会被多次使用,我的问题是,这会影响性能吗?如果是这样,有没有更好的方法来做到这一点?
【问题讨论】:
因为这里有些人喜欢这样投降。你必须习惯它:( 是的,至少,在他们这样做之前,说点什么,像我这样的新手,当像他/她这样的人在这里漫游时,怎么能得到帮助。他们甚至没有帮助他们这样做。 我知道。告诉他们。 问题是我无法反击,因为我不知道他们是谁,也无法举报。 我在这里一开始遇到了完全相同的问题。所以我习惯了:/ 【参考方案1】:只使用其他。然后条件将只检查一次
没有
if(is_numeric($key))
/.../
if(is_string($key))
/../
但是
if(is_string($key))
/../
else
/.../
【讨论】:
好的,我明白你的意思了,但我还有一些问题没有得到解答,显然在你的代码中is_string()
会被调用很多次,is_string()
会影响性能吗如果它被多次调用?
最多只有 200 次迭代,所以没问题。现在我们将这个 IF 减少了一半 ;) 另外,你想用这个键做什么?也许有更好的解决方案
数组可能超过 200 个,是的,你的回答似乎减少了一些东西,我用它来生成 html tags
和 attributes
。
你能告诉我更多关于这个的事情吗?现在很难比我更能帮助你了。
什么是什么?这是数组array('div', 'class' => 'div_class')
的示例。以上是关于性能:foreach 循环中的 is_numeric() 和 is_string()的主要内容,如果未能解决你的问题,请参考以下文章
Stringbuilder用于Parallel.Foreach循环