【问题标题】:How to assign one array elements to another array?如何将一个数组元素分配给另一个数组?
【发布时间】:2017-11-22 06:37:55
【问题描述】:

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

Saloon_staff

saloon_staff_timings

现在在 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>";
     } 
?>

这段代码的结果。

第一个 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 
            )

    )

我们将不胜感激。

【问题讨论】:

  • 你可以只使用一个连接语句,不需要使用两个查询
  • 使用 JOIN 并在数据库端执行。
  • 如果您保留当前将所有数据存储在$saloon_staff/$staff_timings 中的方法,则需要有一种方法来关联数据,即使用saloon_staff_id 作为键( s) 在您的$staff_timings 中。然后你可以做 -> foreach($staff_timings[$key] =&gt; ...

标签: php arrays codeigniter-3


【解决方案1】:

简单你缺少 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`
    

    【讨论】:

      【解决方案3】:

      您好,试试下面的 sn-p。它应该可以工作。

      <?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。这应该会导致与特定用户相关的修剪。

      【讨论】:

        【解决方案4】:

        您需要检查$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 标记,而不是分隔 html。

        【讨论】:

        • 错了,应该是 $value->id 而不是 $value->saloon_profiles_id
        猜你喜欢
        • 1970-01-01
        • 2016-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-22
        相关资源
        最近更新 更多