【问题标题】:sorting a foreach function loop result对 foreach 函数循环结果进行排序
【发布时间】:2014-01-17 20:13:26
【问题描述】:

我有一个 MySQL 查询,它将整个 MySQL 数据库的结果放入一个名为 $parents 的 php 数组中

然后我有一个 foreach 函数循环,显示该数组的结果

功能:

 function subtree($id, $parents) { 
 if (isset($parents[$id]))
 foreach ($parents[$id] as $child) 
 {
 subtree($child, $parents);
 }
 } 

我需要对这个函数的数组结果进行排序, 或将结果放入new_sub_array 然后对其进行排序并显示结果

有什么方法可以修改函数来做我需要的吗?

【问题讨论】:

标签: php mysql arrays sorting foreach


【解决方案1】:

改变你的条件

if (is_array($parents[$id]))

如果 Value 是数组,则查找下一个子树

else

否则写入值。

如果您想对数组进行排序 - 只需在 subtree() 的开头使用 this function 之一

最好不要使用递归,你可以使用迭代和精心准备的 sql 查询来代替 PHP 中的排序;)

你的函数可能是这样的,我不确定我是否理解你,但应该没问题。

function subtree($parents) 
{
    if (is_array($parents))
    {
        sort($parents);
        foreach ($parents as $key => $value) 
        {
            subtree($value);
        }
    }
    else
    {
        echo $parents;
    }
} 

$id 参数是不必要的。

【讨论】:

  • 可以修改功能吗?一直在尝试,但没有运气
  • $id 是我需要获取其孩子的父 ID。数组就像 parent-LeftChild1,RightChild1 Parent(LeftChild1)-Leftchild2,RightChild2 ,然后函数应该打印主要父母的每个孩子和孩子的孩子等等,我只需要对函数的结果进行排序跨度>
  • 因此,如果您想获取特定父 ID 的子代,则将函数用作类似 $parent[$specific_id] 的参数。你的数组看起来像这样pastebin.com/JXdDRL5A 吗?
【解决方案2】:

当您从数据库中调用这些值时,您会对其进行排序。因此,如果您按日期的降序对它们进行排序,例如:

SELECT * FROM values WHERE :id=$id ORDER BY date DESC

基本上,ORDER BY 是你的朋友。 This helped me a lot.

【讨论】:

  • 需要从函数而不是查询中排序
  • 那么这个link绝对是你想要使用的。用于排序数组的大量函数。
  • 问题是我无法找到在函数内部对其进行排序的方法。结果总是未排序
猜你喜欢
  • 1970-01-01
  • 2020-01-27
  • 2019-11-08
  • 1970-01-01
  • 2021-04-24
  • 2015-06-05
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
相关资源
最近更新 更多