将两个PHP对象链接在一起
我有两个目标:将两个PHP对象链接在一起,php,Php,我有两个目标: $userinfo->pilotid; $departures->total; 我试图在$userinfo=$userinfo->pilotid中获取特定$departions->total的$pilotid 但是,我不确定如何链接它们,使其以A表示B。我有类似的内容,但它没有显示任何内容 <?php echo $pilotid->$departures->total; ?> 这是使用查询从中收集对象的表的结构 我想你需要的是这个(请注意
$userinfo->pilotid;
$departures->total;
我试图在
$userinfo
=$userinfo->pilotid
中获取特定$departions->total
的$pilotid
但是,我不确定如何链接它们,使其以A表示B。我有类似的内容,但它没有显示任何内容
<?php echo $pilotid->$departures->total; ?>
这是使用查询从中收集对象的表的结构
我想你需要的是这个(请注意花括号):
除非我误解了这个问题……我想你需要的是这个(注意花括号):
除非我误解了这个问题…来自OP提供的数据,否则我假设
$departments
与$userinfo
有1:n的关系,$userinfo
是包含pilotid的1
所以,为了找出飞行员总共有多少次起飞,有两种可能的方法,一种是使用子查询,意思是这样的:
$pilotid = Auth::$userinfo->pilotid;
SELECT (SELECT COUNT(*) FROM `departures` WHERE `pilot_id` = ID) as total, * FROM pilots;
在这种情况下,您的总计将位于$userinfo
查询的total
列中
第二次尝试使用实际的PHP。在这个场景中,您自己进行计数
第一步:获取飞行员信息:
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$row->departures = array();
$userinfo[$row->pilotid] = $row;
}
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$userinfo[$row->pilotid] = $row;
}
这些行将为您提供阵列中键入其ID的先导数据。
第二步。把起飞的飞机粘在飞行员身上
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$userinfo[$row->pilotid]->departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
$departures = array();
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
如果这不是您想要的,我需要您提供更多信息,但是像这样,您可以通过使用$userinfo
对象中的total
变量,或者通过调用departments
数组中的count
来获取飞行员的离港情况
另一种变体将实际起飞和飞行员分开,如下所示:
$pilotid = Auth::$userinfo->pilotid;
SELECT (SELECT COUNT(*) FROM `departures` WHERE `pilot_id` = ID) as total, * FROM pilots;
第一步:获取飞行员信息:
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$row->departures = array();
$userinfo[$row->pilotid] = $row;
}
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$userinfo[$row->pilotid] = $row;
}
这些行将为您提供阵列中键入其ID的先导数据。
第二步。把起飞的飞机粘在飞行员身上
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$userinfo[$row->pilotid]->departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
$departures = array();
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
我希望你会发现这些建议很有用
编辑:
在OP提供了一些附加信息之后,我建议更改用于访问相关信息的查询
这是OP的原始代码
$dep_query = "SELECT COUNT(pilotid) as total, depicao, pilotid FROM phpvms_pireps GROUP
BY depicao, pilotid ORDER BY total DESC LIMIT 5";
$fav_deps = DB::get_results($dep_query);
foreach($fav_deps as $departure)
{
$dep_airport = OperationsData::getAirportinfo($departure->depicao);
$pilotid = Auth::$userinfo->pilotid;
?>
<tr class="awards_table1">
<td width="10%"><?php echo $departure->depicao; ?></td>
<td width="10%"><img src="<?php echo Countries::getCountryImage($dep_airport->country); ?>" /></td>
<td width="60%"><?php echo $dep_airport->name; ?></td>
<td width="20%"><?php echo $pilotid->{$departures->total}; ?></td>
</tr>
<?php
}
?>
此查询将返回由相关飞行员运行的从不同机场出发的前5个航班。至于其他方面:
$fav_deps = DB::get_results($dep_query);
if(is_array($fav_deps)) { //For the general use
foreach($fav_deps as $departure) {
$dep_airport = OperationsData::getAirportinfo($departure->depicao); ?>
<tr class="awards_table1">
<td width="10%"><?php echo $departure->depicao; ?></td>
<td width="10%"><img src="<?php echo Countries::getCountryImage($dep_airport->country); ?>" /></td>
<td width="60%"><?php echo $dep_airport->name; ?></td>
<td width="20%"><?php echo $departure->total; ?></td> //Here is the actually changed Layout code
</tr>
<?php
}
} else echo "This pilot didn't have any departures yet.";
$fav\u deps=DB::get\u results($dep\u query);
if(is_数组($fav_deps)){//用于一般用途
foreach($fav_deps作为$exchange){
$dep_airport=OperationsData::getAirportinfo($Exhibit->depicao);?>
国家);?>“/>
//这是实际更改的布局代码
根据OP提供的数据,我假设$departments
与$userinfo
有1:n的关系,$userinfo
是包含pilotid的1
所以,为了找出飞行员总共有多少次起飞,有两种可能的方法,一种是使用子查询,意思是这样的:
$pilotid = Auth::$userinfo->pilotid;
SELECT (SELECT COUNT(*) FROM `departures` WHERE `pilot_id` = ID) as total, * FROM pilots;
在这种情况下,您的总计将位于$userinfo
查询的total
列中
第二次尝试使用实际的PHP
第一步:获取飞行员信息:
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$row->departures = array();
$userinfo[$row->pilotid] = $row;
}
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$userinfo[$row->pilotid] = $row;
}
这些行将为您提供阵列中键入其ID的先导数据。
第二步,把起飞的飞机粘在飞行员身上
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$userinfo[$row->pilotid]->departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
$departures = array();
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
如果这不是您想要的,我需要您提供更多信息,但是像这样,您可以通过使用$userinfo
对象中的total
变量,或者通过调用departments
数组中的count
来获取飞行员的离港情况
另一种变体将实际起飞和飞行员分开,如下所示:
$pilotid = Auth::$userinfo->pilotid;
SELECT (SELECT COUNT(*) FROM `departures` WHERE `pilot_id` = ID) as total, * FROM pilots;
第一步:获取飞行员信息:
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$row->departures = array();
$userinfo[$row->pilotid] = $row;
}
$userinfo = array();
while($row = fetch()) {
$row->total = 0;
$userinfo[$row->pilotid] = $row;
}
这些行将为您提供阵列中键入其ID的先导数据。
第二步,把起飞的飞机粘在飞行员身上
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$userinfo[$row->pilotid]->departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
$departures = array();
while($row = fetch()) {
if(isset($userinfo[$row->pilotid])) {
$departures[] = $row;
++$userinfo[$row->pilotid]->total;
}
}
我希望你会发现这些建议很有用
编辑:
在OP提供了一些附加信息之后,我建议更改用于访问相关信息的查询
这是OP的原始代码
$dep_query = "SELECT COUNT(pilotid) as total, depicao, pilotid FROM phpvms_pireps GROUP
BY depicao, pilotid ORDER BY total DESC LIMIT 5";
$fav_deps = DB::get_results($dep_query);
foreach($fav_deps as $departure)
{
$dep_airport = OperationsData::getAirportinfo($departure->depicao);
$pilotid = Auth::$userinfo->pilotid;
?>
<tr class="awards_table1">
<td width="10%"><?php echo $departure->depicao; ?></td>
<td width="10%"><img src="<?php echo Countries::getCountryImage($dep_airport->country); ?>" /></td>
<td width="60%"><?php echo $dep_airport->name; ?></td>
<td width="20%"><?php echo $pilotid->{$departures->total}; ?></td>
</tr>
<?php
}
?>
此查询将返回由相关飞行员运行的从不同机场出发的前5个航班。至于其余的:
$fav_deps = DB::get_results($dep_query);
if(is_array($fav_deps)) { //For the general use
foreach($fav_deps as $departure) {
$dep_airport = OperationsData::getAirportinfo($departure->depicao); ?>
<tr class="awards_table1">
<td width="10%"><?php echo $departure->depicao; ?></td>
<td width="10%"><img src="<?php echo Countries::getCountryImage($dep_airport->country); ?>" /></td>
<td width="60%"><?php echo $dep_airport->name; ?></td>
<td width="20%"><?php echo $departure->total; ?></td> //Here is the actually changed Layout code
</tr>
<?php
}
} else echo "This pilot didn't have any departures yet.";
$fav\u deps=DB::get\u results($dep\u query);
if(is_数组($fav_deps)){//用于一般用途
foreach($fav_deps作为$exchange){
$dep_airport=OperationsData::getAirportinfo($Exhibit->depicao);?>
国家);?>“/>
//这是实际更改的布局代码
现在,既然手续已经办妥了,让我们看看我能不能帮你。$userinfo
的确切结构是什么?那么$userinfo->pilotid
和$departitions->total
?数组、字符串、标量?请把变量转储的输出放在这里。我不明白为什么$userinfo->pilotid
c一个不是数组?!@Havelock你说得对,它可能是数组。但是$userinfo
显然是一个对象,就像$depurtures
一样,我理解这个问题的方式是,海报希望以某种方式将它们联系在一起。现在,由于手续不便,让我们看看我是否可以帮助你。的确切结构是什么$userinfo
?那么$userinfo->pilotid
和$departments->total
中有什么?数组、字符串、标量?请尝试将var\u dump
的输出放在这里。我不明白为什么$userinfo->pilotid
不能是数组?!@Havelock你是对的,它可能是数组。然而$userinfo
显然是一个对象t、 原样,$departures
,以及