Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将两个PHP对象链接在一起_Php - Fatal编程技术网

将两个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
,以及