我想获取表A上引用表B的所有名称

时间:2019-02-01 23:53:39

标签: php mysql database

在laravel中,我可以通过假设子表和父表这两个表之间存在关系来做到这一点。

我可以使用孩子访问多少次父母。

$ child-> parent-> id;

但是在纯PHP中我不知道它是如何工作的。到目前为止,我只尝试过

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 个答案:

答案 0 :(得分:0)

折叠数组之一

 $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列将从多维数组中仅返回单个列。所以如果你有

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

使用array_column($shops, 'id')并给出上面的示例,我希望以此作为结果

[1,2,3]

通过像这样减少数据量,您只需使用in_array即可避免执行2次循环。

-注意-

如果shop是一个对象,则可以将其转换为一个数组,如下所示:

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

假设属性id是公共的。