有没有比使用多个FOR更好的方法来计算基于更多标准的特定值?

时间:2014-03-16 04:27:12

标签: javascript php jquery

这是我第一次使用php和javascript,感谢这个伟大的网站,我设法将我需要它的部分粘在一起。

现在,我有一个.txt文件,其中列出了实际的技能;根据文件中有多少行,页面加载具有相同行数的表(我使用数组管理数据,因此是foreach)。

然后还有另外两个txt文件,第一个包含所有代理列表,第二个包含技能列表,其中当前是代理登录的;从这里我创建了第二个表,在那里我看到列出的代理和技能,他们在不同的团队(列)中登录(行)(同样,来自.txt的所有数据我进入数组,并使用foreach构建表)。

现在,我已经可以做的是能够计算当前在不同团队的每项技能中分别记录的代理人数。因为我在需要一些条件格式时安装了jquery,所以我还决定使用jquery:

$(document).ready(function(){
  var jtym = $("div.tttt").html();  // this is how I manage to get the total number of teams;
  var jzel = $("div.hhhh").html();  // this is how I manage to get the total number of used skills;

  for ( var j = 1; j <= jtym; j++ ) {  // to loop through all teams, e.g. table columns (they have IDs like team1, team2, team3... created using foreach); 
    for ( var i = 0; i <= jzel; i++ ) {  // to loop through all agents in one team, e.g. rows in one column (they have IDs like skill1, skill2, skill3... created using foreach);
      var v_skill_u =  $( '#team' + j + ':contains("' + $( "[id=skill" + i + "u]" ).html() + '") ').length;  // skill1-10 or more I get from txt file into first table; this is how I get what to count;
      if (v_skill_u > 0){  // avoid writing if the count is 0 to make it more well arranged;
        $( '#skill_log' + i + '_team' + j).text( v_skill_u );  // show the final reasult in table where again column = team and rows are agents logged into skill
      }
    }
  }
});

但它只需要5个团队(每个10个代理)和10个技能就可以使页面加载整整2秒。 那么处理此类任务的方法是否比使用多个FOR?

更有效

非常感谢你的帮助,我喜欢这个网站;就像我说的,这是我第一次尝试使用php和javasript,我真的很喜欢玩它而且我认为自己用google搜索得很好但我找不到任何关于这个的页面。 干杯!

编辑:我试过没有它和加载IS的长度因为这个脚本。

2 个答案:

答案 0 :(得分:0)

如果您在发送标题之前使用PHP读取文本文件,我会在迭代文本文件时将#skill_log项目创建为PHP字符串,以便稍后在页面中回显。使用Jquery执行此操作,您必须先加载文件,然后在代码开始运行之前在浏览器中加载整个DOM。你不会说有多少次迭代发生,但我认为它在PHP中要快得多。

我的数组并不完全清楚,但使用像array_search这样的PHP函数可以让你在不重复代码中的两个数组的情况下执行此操作。也许是这样的:

foreach ($skill_array as $enumKey => $skill) {
$key_found = array_search($skill, $team_array);
if($key_found !== false){
    $html_output .= '<input id="skill_log' . $enumKey . '_team' . $key_found . ' value="' . $skill . '"';
}
}

答案 1 :(得分:0)

以下是答案:

使用php要快得多,可能是因为我已经加载了所有数组。 我用FOREACH循环了所有3个使用过的数组(团队,技能,记录的代理),使用IF来限制每个步骤的选择:

  1. 分开球队的前途
  2. 在每个团队中循环技能
  3. FOREACH循环记录所有已登录的代理
  4. IF语句按团队过滤代理
  5. 在所选代理商组内按技能过滤的IF声明
  6. count ++:)
  7. 这是5 + 6部分代码:

    if (count( array_keys( $agent_subarray, print_r($skill_subarray['Skill']) )) > 0) {
       $count++;
    }
    

    感谢您的灵感! 如果你有一些简单的教程如何创建web sql数据库并将其与php连接我将不胜感激。 玩得开心!