Php 在选择查询中需要帮助吗

Php 在选择查询中需要帮助吗,php,mysql,arrays,Php,Mysql,Arrays,下面是我的数据库表数据 id name manager_id hr_id 1 abc 0 0 20 abc1 22 21 21 abc2 22 1 22 abc3 1 1 31 abc4 20 21 32 abc5 20

下面是我的数据库表数据

id    name  manager_id  hr_id          
 1    abc            0      0           
20    abc1          22     21         
21    abc2          22      1  
22    abc3           1      1   
31    abc4          20     21 
32    abc5          20     21 


function get_child_users($id){
    global $mysqli;
    $q ="SELECT * FROM users where manager_id ='$id' or hr_id ='$id'";
    $sql = $mysqli->query($q);
    echo '<ul>';
    $count = $sql->num_rows;

    if($count > 0 ){
        while($row =  $sql->fetch_array()){
               echo '<li id='.$row['id'].'>'.$row['username'].'';
               echo'</li>';
            }
        echo '</ul>';
        }
    }
id姓名经理\u id人力资源\u id
1 abc 0 0
20 abc1 22 21
21 abc2 22 1
22 abc3 1
31 abc4 20 21
32 abc5 20 21
函数get\u child\u users($id){
全球$mysqli;
$q=“从manager_id='$id'或hr_id='$id'的用户中选择*;
$sql=$mysqli->query($q);
回声“
    ”; $count=$sql->num\u行; 如果($count>0){ 而($row=$sql->fetch_array()){ 回显“
  • ”.$row['username'.”; 回音“
  • ”; } 回声“
”; } }
上面是我正在创建的函数

我只是想获取数据,所以如果

管理员
用户(具有管理员的管理员id或hr id)
如果有用户。假设它返回2个用户
然后(检查这些用户下的用户)…依此类推


最后成为一个显示用户层次结构的树。

您只需先对其进行解码,然后获得所需的任何值,如:

$decoded_json = json_decode($json);
print_r($decoded_json->person->names[0]);
echo $decoded_json->person->names[0]->first;
如果需要循环每个人名,例如:

foreach ($decoded_json->person->names as $key => $each_person_name) {
    echo $each_person_name->first . '<br>';
}
foreach($decoded\u json->person->names as$key=>$each\u person\u name){
echo$each_person_name->first.“
”; }
您的json格式有点奇怪。

解决了这个问题

function get_child_users($id){
    global $mysqli;
    $q ="SELECT * FROM users where manager_id ='$id' or hr_id ='$id'";
    $sql = $mysqli->query($q);
    $count = $sql->num_rows;
    if($count > 0 ){
        echo '<ul>';
        while($row =  $sql->fetch_array()){
               echo '<li id='.$row['id'].'>'.$row['username'].'';
                          get_child_users($row['id']);
               echo'</li>';
            }
        echo '</ul>';
        }

    }
函数获取子用户($id){
全球$mysqli;
$q=“从manager_id='$id'或hr_id='$id'的用户中选择*;
$sql=$mysqli->query($q);
$count=$sql->num\u行;
如果($count>0){
回声“
    ”; 而($row=$sql->fetch_array()){ 回显“
  • ”.$row['username'.”; 获取子用户($row['id']); 回音“
  • ”; } 回声“
”; } }
Try:
$array=json\u decode($josn,ture)
print\r($array[1])解码你的json,
打印(json解码($json)->个人)我需要循环每个人的姓名、用户名、性别等。。它类似于这样的foreach($person as$person){$person['names'][0],$person['email'][0],$person['username'][0]}这正是我需要的。因此,每个第一个元素或每个数组都是一个完美的记录。希望您能得到它。是的,但问题是您的JSON格式,它不允许您一次性循环这些人,因为数组嵌套在person的属性中。。所以,您需要做的是为每个值分离循环。。以上示例仅用于名称,但对于电子邮件和其他邮件应相同。。。