对foreach函数循环结果进行排序

时间:2013-12-30 21:45:43

标签: php mysql arrays sorting foreach

我有一个MySQL查询,它将整个MySQL数据库的结果转换为名为$parents

的php数组

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

功能:

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

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

任何修改函数的方法都可以做我需要的吗?

2 个答案:

答案 0 :(得分:0)

改变你的状况

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

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

else

否则写入值。

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

好主意是不要使用递归,而不是这样你可以使用迭代和准备好的sql查询而不是在PHP中排序;)

你的功能看起来像这样,我不确定我是否理解你,但它应该没问题。

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

$ id参数是不必要的。

答案 1 :(得分:-1)

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

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

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