多维数组到平面数组php

多维数组到平面数组php,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我一直在搜索,但是找不到一个解决PHP问题的有效方法 我有一个带有评论的数组,用户可以对它发表评论。您可以看到,每个注释都有一个名为level的值。我想要一个由8个对象组成的平面阵列,其顺序与现在显示的相同。这就是注释id->1,2,3,8,4,5,6,7 编辑: 这就是我用来构建阵列的方法: function loopThroughComments($rows = null, $row = null, $flat = false, $level){ $limit = count($ro

我一直在搜索,但是找不到一个解决PHP问题的有效方法

我有一个带有评论的数组,用户可以对它发表评论。您可以看到,每个注释都有一个名为level的值。我想要一个由8个对象组成的平面阵列,其顺序与现在显示的相同。这就是注释id->1,2,3,8,4,5,6,7

编辑: 这就是我用来构建阵列的方法:

function loopThroughComments($rows = null, $row = null, $flat = false, $level){
    $limit = count($rows);
    for($i = 0; $i < $limit; $i++){
        $rows[$i]['comments'] = loopThroughComments($rows[$i]['comments'], $row, $flat, $level++);
        if($rows[$i]['comment_id'] == $row['comment_on_id']){
            if($flat){
                $row['level'] = $level;
            }
            array_push($rows[$i]['comments'], $row);
            break;
        }
    }
    return $rows;
}
此代码应适用于:

<?php

$result = array();

$arr = $arr[0];

while (is_array($arr['comments']) {
  $el = $arr;
  unset($el['comments']);
  $result[] = $el; 
  if (isset($arr['comments'])) {
    $arr = $arr['comments'];
  }
  else {
    break;
 }
}
进入


另一种解决方案是创建额外的循环,但这种解决方案在您的情况下应该已经足够了。

从您的问题的编写方式来看,有些人可能会错误地认为您希望我们为您编写代码,这与主题无关。我想你只是想在你自己的代码上得到帮助,所以你能告诉我们你到目前为止写了什么吗?谢谢你的回答。这不完全是我需要的,但我把它改成了:全局$flatary;foreach$行作为$key=>$value{$arr=$value;unset$arr['comments'];array_push$flatary,$arr;ifisset$value['comments']{flattarray$value['comments'];}
<?php

$result = array();

$arr = $arr[0];

while (is_array($arr['comments']) {
  $el = $arr;
  unset($el['comments']);
  $result[] = $el; 
  if (isset($arr['comments'])) {
    $arr = $arr['comments'];
  }
  else {
    break;
 }
}
  $el = $arr;
  unset($el['comments']);
  $result[] = $el; 
  $el['comment_id'] = $arr['comment_id'];
  $el['user_id'] = $arr['user_id'];
  // and so on until
  $el['comment_likes'] = $arr['comment_likes'];