如何将一个数组的元素分配给另一个数组?

3

我在数据库中有两张表,一张是saloon_staff,另一张是saloon_staff_timings

Saloon_staff enter image description here

saloon_staff_timings enter image description here

现在我正在向saloon_staff_timings表中插入沙龙员工的时间。我运行了两个查询以从表中获取数据,第一个查询通过saloon_staff_timings表中的saloon_staff_id获取沙龙员工的姓名,而第二个查询获取沙龙员工的时间。

以下是我的代码。

<?php 

 foreach ($saloon_staff as $key => $value)
  {
    echo"<tr>";

    echo"<td> $value->staff_name </td>";


      foreach ($staff_timings as $key => $stf_timngs) 
       {
  ?>
     <td><?php echo $stf_timngs->start_time ?></td>
  <?php 
        } 
       echo"</tr>";
     } 
?>

这段代码的结果如下图所示: enter image description here 第一个foreach循环显示理发店员工的姓名,第二个foreach循环显示理发店员工的时间。我在第二个foreach循环中遇到了问题,我想获取每个员工的姓名和对应的时间。但是目前,我得到的是数据库中所有可用时间,这是错误的。
理发店员工的时间:print_r($saloon_staff)
  Array
    (
        [0] => stdClass Object
            (
                [staff_name] => Salman Iqbal
                [id] => 1
            )

        [1] => stdClass Object
            (
                [staff_name] => Alludin 
                [id] => 2
            )

    )

沙龙员工时间打印 print_r($staff_timings)

 Array
    (
        [0] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Monday
                [start_time] => 01:03:00
                [end_time] => 18:00:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [1] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Tuesday
                [start_time] => 03:06:00
                [end_time] => 19:04:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [2] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Wednesday
                [start_time] => 02:08:00
                [end_time] => 21:08:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [3] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Thursday
                [start_time] => 01:00:00
                [end_time] => 14:08:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [4] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Friday
                [start_time] => 01:06:00
                [end_time] => 19:09:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [5] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Saturday
                [start_time] => 01:09:00
                [end_time] => 15:09:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [6] => stdClass Object
            (
                [id] => 1
                [saloon_staff_id] => 1
                [day] => Sunday
                [start_time] => 00:03:00
                [end_time] => 19:09:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 098098098
                [email] => SalmanIq@facebook.com
                [appointments_enabled] => 1
                [role_in_saloon] => Owner
                [name] => Salman Iqbal
            )

        [7] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Monday
                [start_time] => 02:03:00
                [end_time] => 16:09:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

        [8] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Tuesday
                [start_time] => 01:09:00
                [end_time] => 20:01:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

        [9] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Wednesday
                [start_time] => 01:09:00
                [end_time] => 21:00:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

        [10] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Thursday
                [start_time] => 11:00:00
                [end_time] => 13:09:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

        [11] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Friday
                [start_time] => 01:07:00
                [end_time] => 21:00:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

        [12] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Saturday
                [start_time] => 00:00:00
                [end_time] => 00:00:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

        [13] => stdClass Object
            (
                [id] => 2
                [saloon_staff_id] => 2
                [day] => Sunday
                [start_time] => 00:00:00
                [end_time] => 00:00:00
                [break_start] => 00:00:00
                [break_end] => 00:00:00
                [saloon_profiles_id] => 1
                [phone_number] => 98790809809
                [email] => alludin@gmail.com
                [appointments_enabled] => 1
                [role_in_saloon] => No Access
                [name] => Alludin 
            )

    )

任何帮助都将不胜感激。

2
你可以直接使用连接语句,不需要使用两个查询。 - Kevin
1
使用 JOIN,在数据库端执行。 - ArtisticPhoenix
如果您继续使用将所有数据存储在 $saloon_staff/$staff_timings 中的当前方法,您需要有一种关联数据的方式,即在 $staff_timings 中使用 saloon_staff_id 作为键。然后,您可以执行 -> foreach($staff_timings[$key] => ... - Sean
4个回答

2

你的代码缺少if语句...尝试这样写:

<?php 

foreach ($saloon_staff as $key => $value){
    echo"<tr>";
    echo"<td> $value->staff_name </td>";
    foreach ($staff_timings as $key => $stf_timngs){
       if($stf_timngs->saloon_staff_id == $value->id ){?>
       <td><?php echo $stf_timngs->start_time ?></td>
   <?php }  }
   echo"</tr>";
 } ?>

希望能帮到您!如果您想进行连接操作,请参考@sajeevan的回答。

2
只需使用 INNER JOIN 来连接两个表,并通过使用条件显示适当的列中的数据。
SELECT ss.*,sst.* FROM `Saloon_staff` INNER JOIN `Saloon_Staff_timings` AS sst ON sst.`saloon_staff_id`= ss.`saloon_profile_id`

2

嗨,尝试使用下面的代码片段。它应该可以正常工作。

<?php 

  foreach ($saloon_staff as $key => $value) {

  echo"<tr>";
  echo"<td> $value->staff_name </td>";

  foreach ($staff_timings as $key => $stf_timngs) {

     if($value->id  == $stf_timngs->saloon_staff_id ){
          echo  "<td>".$stf_timngs->start_time."</td>";
      }

    } 

   echo"</tr>";

 } 

在你的代码中,你只是打印出了修剪,而不管哪个用户定时。因此,我在第一个foreach循环中添加了一个对用户id与时间表中的员工配置文件id进行检查的条件。这应该会导致与特定用户相关的修剪。


1
你需要检查$saloon_staff的ID和$staff_timings的ID。它打印所有内容的原因是我们没有进行检查。
以下是代码:
foreach ($saloon_staff as $key => $value){
    echo '<tr>';
    echo '<td>' . $value->staff_name . '</td>';
    foreach ($staff_timings as $key2 => $stf_timngs) {
        // Check ID if equal
        if($value->id == $stf_timings->saloon_staff_id){
            echo '<td>' . $stf_timngs->start_time . '</td>';
        }
    } 
    echo"</tr>";
} 

我也清理代码。这样做更易于阅读,因为我在echo中包含了html标签,而不是将其分离。

1
错误的应该是 $value->id 而不是 $value->saloon_profiles_id。 - kunal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接