我有一个网站,允许人们购买特定游戏的项目。我有一个页面显示200多个项目的所有可用库存。该信息来自Steam API。
我使用此代码来计算可用的项目。
$count_foundingFather = 0;
foreach($hatbot1_array['result']['items'] as $item){
if($item['defindex'] == 30142){
$count_foundingFather++;
}
}
计算物品DefIndex编号的找到次数。
从API返回的JSON数组非常庞大,使得页面加载时间花费很长时间。此外,必须为每个项目使用该块代码,这需要更长的时间。
有没有一种方法可以使项目计数更快,或者每次加载页面时都将其分开?
答案 0 :(得分:0)
您可以在结果数组中保存每个defindex的项目数:
$counts = array();
foreach($hatbot1_array['result']['items'] as $item){
if(isset($counts[$item['defindex']])) {
$counts[$item['defindex']] = 1;
} else {
++$counts[$item['defindex']];
}
}
也许结果数组可以像hank一样缓存。
答案 1 :(得分:0)
一种方法是使用array_filter()过滤数组,然后计算结果数组。
$count_foundingFather = count(
array_filter( $hatbot1_array['result']['items'], function( $item ) {
return $item['defindex'] == 30142;
}
));
这会加速我不知道,做一个基准测试How to benchmark efficiency of PHP script。这是一个简单的基准示例,不使用外部工具:
function get_time() {
$mtime = explode( ' ', microtime() );
return $mtime[1] + $mtime[0];
}
function speed( $start ) {
return ( get_time() - $start );
}
$start = get_time();
// do the work
echo speed( $start );
答案 2 :(得分:-1)
只需使用:
count($hatbot1_array['result']['items']);