【问题标题】:Using keys in a php array to sort and change div display order使用 php 数组中的键对 div 显示顺序进行排序和更改
【发布时间】:2011-12-03 09:46:58
【问题描述】:

我有一个动态 php 变量数组,它们是几个 div id 的键。我正在寻找一种对 php 数量进行排序并使用该序列重新排序我的 div 的方法。我发现了一些关于如何使用 jquery 基于数组输入重新排序 div 的线程,但是它们都不同,以我的技能水平,我无法有效地适应它们的建议。这是一个非常接近我想要做的线程。 Dynamically arranging divs using jQuery

明确说明我的目标:参赛者筹款,每个人都有一个筹款页面。 php 变量是他们从他们的页面中提取的金额。该函数将排序页面上的 div 以首先显示最高收入者,依此类推。

下面的代码反映了我的布局,但我应该澄清一下,我的 div 都有独特的内容,因此动态生成对它们不起作用。

<?php 

$Contestants = array(
    $Totals[0] => 'contestant0', 
    $Totals[1] => 'contestant1',
    $Totals[2] => 'contestant2'
);

krsort ($Contestants);

?>

<div id="container">
 <div id="contestant0">
  <p><?php print ($Totals[0]) ?></p> 
 </div>
 <div id="contestant1">
  <p><?php print ($Totals[1]) ?></p> 
 </div>
 <div id="contestant2">
  <p><?php print ($Totals[2]) ?></p> 
 </div>
</div>

我知道我给出的代码是多么简单,但我认为我敲出来的 javascript 毫无用处,充其量是令人尴尬的。

非常感谢任何帮助。

【问题讨论】:

  • 这确实不是个好办法。
  • 理想情况下,您可以使用自定义排序函数 (php.net/manual/en/function.uksort.php) 按参赛者的捐赠金额对参赛者数组进行排序,然后使用 for() 循环输出该数组。除非您想要在页面上进行大量实时的、用户控制的排序,否则在 PHP 中进行这项工作是比在 JS 中更好的选择。

标签: php jquery arrays sorting html


【解决方案1】:

不需要 jQuery,除非我遗漏了什么。

<?php 

$Contestants = array(
    $Totals[0] => 'contestant0', 
    $Totals[1] => 'contestant1',
    $Totals[2] => 'contestant2'
);

rsort ($Contestants);

?>


<div id="container">
<?php foreach( $Contestants as $k => $v ) { ?>  
   <div id="<?php echo $v ?>">
     <p><?php echo $k ?></p> 
    </div>
<?php } ?>
</div> 

【讨论】:

  • 非常酷的方法。不幸的是,这只适用于所有 div 都相同的情况。我的每个 Div 都有独特的内容。如果多次使用会导致循环。
【解决方案2】:

在 JSfiddle 上做了一个简单的例子:

http://jsfiddle.net/2U7fv/4/

听起来你需要使用一个标准的 JS 方法“sort()”,它采用一个双参数方法来比较两个参数,如果参数 B 应该比参数 A 排在前面,则返回 1 或更大的值.http://www.w3schools.com/jsref/jsref_sort.asp

所以流程是:

  • 将所有 div 放入一个数组中
  • 通过排序方法运行比数组
    • 排序方式:
    • 获取两个div的捐款金额
    • 解析美元符号
    • 如果 B 更高则返回 1 或更大,如果 A 更高则返回 0 或更小
  • 这会返回一个有序的 DOM 节点数组
  • 将该数组转换为一个长 HTML 字符串
  • 将#container html 设置为该字符串

【讨论】:

  • 在我对您原始问题的评论中,我建议使用 PHP 而不是 JavaScript,除非您有特定的原因没有告诉我们。然而,值得注意的是,PHP 的 ksort() 和 JS 的 sort 以相似的方式工作——它们都采用双参数回调,以您指定的方式比较参数。
  • 除非我有误解,否则我认为你们将我的隐喻布局过于字面化了。我的示例代码只是我的 div 布局和命名系统的代表。真实的站点布局在每个 div 中都有很多 CSS 和 html 内容,包括其他几个 div。如果我理解您的解决方案,您进入每个 div,获取 php 捐赠值,剥离 div,对值进行排序,然后将它们作为 html 打印在单个 div 中。感谢您如此周到的回复,但我确实需要维护 div,只在页面上对其进行排序。
  • 在本例中,我根据捐赠金额对 div 进行重新排序。你需要他们订购什么?在我的示例中,没有“剥离”任何内容 - 我将所有 div 加载到一个数组中,按数量重新排序,然后将它们重新放置到页面的同一位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2023-01-18
相关资源
最近更新 更多