Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建间隔插入加权项的数组_Php_Jquery - Fatal编程技术网

Php 创建间隔插入加权项的数组

Php 创建间隔插入加权项的数组,php,jquery,Php,Jquery,我正在开发一个用于客户大厅的留言板 “rundown”是从PHP创建的JSON,每5分钟通过AJAX调用检查更新。从包含该项、其持续时间以及开始和停止时间的MySQL数据库中填充详细信息。JQuery遍历内容,然后循环到数据的开头。当前列表中没有重复的项目 已请求权重系统,以便在出现重要项目($$$客户、员工会议等)时,它在列表中出现的频率更高(而不是在循环出现之前仅出现一次) 我已向数据库中添加了一个权重列,但在我的最终阵列构建中,我很难确定如何实现它: $i = 0; foreach ($r

我正在开发一个用于客户大厅的留言板

“rundown”是从PHP创建的JSON,每5分钟通过AJAX调用检查更新。从包含该项、其持续时间以及开始和停止时间的MySQL数据库中填充详细信息。JQuery遍历内容,然后循环到数据的开头。当前列表中没有重复的项目

已请求权重系统,以便在出现重要项目($$$客户、员工会议等)时,它在列表中出现的频率更高(而不是在循环出现之前仅出现一次)

我已向数据库中添加了一个权重列,但在我的最终阵列构建中,我很难确定如何实现它:

$i = 0;
foreach ($rundown_standard as $item) {
            $return[$i]["playlist_id"] = $i;
            $return[$i]["item_id"] = $item["id"];
            $return[$i]["weight"] = $item["weight"];
            $return[$i]["duration"] = $item["duration"];
            $return[$i]["template"] = $item["template"];
            $return[$i]["headline"] = htmlentities($item["headline"]);

        $content = $helper->isJson($item["content"]);
        if ($content) {
            $return[$i]["content"] = $content; 
        } else { 
            $return[$i]["content"] = str_replace(array('{images_path_absolute}', '{images_path_relative}'), array(IMAGES_PATH_ABSOLUTE, IMAGES_PATH_RELATIVE), $item["content"]);
        }

    i++;
}
$return
是我发送给调用此函数的函数的格式化数据

默认权重为
0
,这意味着它只应按添加到数组中的顺序显示一次,权重为
90
的内容应每隔一项显示一次

我尝试设置另一个计数器变量,然后插入项目并重置计数器,这只适用于一个加权项目,但不适用于多个加权项目

清澈如泥

谢谢你的建议

编辑17:45:JavaScript只是动态更新页面;遍历JSON并将下一项追加到列表中:

if (window.item_content[i].template == "1") {
    return '<div class="featured-item" id="featured-item-'+window.item_content[i].playlist_id+'"><img src="'+window.item_content[i].content+'" /></div>';
}
if(window.item\u content[i].模板==“1”){
返回“”;
}

这就是我的问题所在的数组,如果有多个元素要插入,我应该如何以指定的间隔插入元素。

听起来你知道如何编码,只需要一个算法,所以我将为你提供一些伪代码。如果您需要我将其转换为更好的代码,我可以这样做

  • 使用两个数组:
    返回
    高优先级
    return
    不关心重量,而
    highPriority
    会关心重量
  • 迭代给定列表,将所有0权重放入
    return
    中,将所有其他权重放入
    highPriority
  • 按重量从最低到最高排序
    highPriority
  • 对于
    highPriority
    中的每个项目,计算结果很简单,但来自一个典型的“规格化和缩放”操作:规格化权重(
    n=weight/90
    ),然后将其缩放到数组的大小(
    n*=return.length
    ),以找到要添加到数组中的项目数。然后,要找到在
    return
    数组中分配项目所需的空间,可以执行
    return.length/n
    。不过,这可以简单地归结为
    90/重量

  • var步骤=90/项重量
  • (变量i=0;i)的