dqask02082 2019-02-01 23:53
浏览 39

我想获得表A中引用表B的所有名称

In laravel i could do this by assuming that there is a relationship between the two tables child and parent.

I could access how many times is parent using the child.

$child->parent->id;

but in pure PHP i have no idea how that works. So far i`ve only tried this

foreach ($shops as $shop) {
foreach ($shopAssistants as $shopAS) {
if($shopAS['shop_id'] != $shop['id']){
?> 
<option id = "<?php echo $shop['id']; ?>"><?php echo $shop['shop_name']; ?> 
</option>
}
  • 写回答

1条回答 默认 最新

  • drhe80011 2019-02-01 23:58
    关注

    Collapse one of the arrays

     $shopIds  = array_column($shops, 'id');
    
     foreach ($shopAssistants as $shopAS) {
          if(in_array($shopAS['shop_id'],$shopIds){
     ?> 
     <option id = "<?php echo $shop['id']; ?>"><?php echo $shop['shop_name']; ?> 
     </option>
     }
    

    Array column will return just a single column from a multi-dimensional array. So if you have

    $shops = [ 
       ['id' => 1, 'name' => 'foo'],
       ['id' => 2, 'name' => 'foo'],
       ['id' => 3, 'name' => 'foo'],
    ]
    

    With array_column($shops, 'id') and given the example above, I would expect this as the result

    [1,2,3]
    

    By reducing the data down like this, you can just use in_array which saves you from having to do 2 loops.

    -Note-

    If shops is an object, you can probably just cast it to an array like so:

    $shopIds  = array_column((array)$shops, 'id');
    

    Assuming the property id is public.

    评论

报告相同问题?

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计