php - PHP通过3个函数级联(传递)后续返回
问题描述
我已经通过 S/O 并没有发现这个具体问题,尽管我缺乏经验可能意味着我搜索了错误的术语。任何帮助,将不胜感激。谢谢你。
基本上,我有三个 PHP 函数(在一个名为 KeyPositions 的类中)。第一个是通过传递参数调用的;第二个函数由第一个函数调用,然后生成一个传递给第三个函数的数组。通过使用 echo 和 print_r,我可以看到所有内容在传递时都已到位。问题发生在从最终函数(第三个)返回时。虽然我的 foreach/echo 测试(就在返回之前)显示数组中的每个元素都存在,但当我查看返回给原始调用的内容时,这并不是我得到的。以下是步骤:
始发呼叫:$keypositions = KeyPositions::getKPSponsor($session_userid);
第二次返回(问题从哪里开始?):return self::getKPList($sponsor_list);
第三个功能:public static function getKPList($arr)
返回前测试(完美显示数组内容):foreach($kppositions as $s) { echo $s['kp_root'],"<br>"; }
退货声明:return $kppositions;
但是当我回到原来的函数调用并运行这个测试时,我只收到了我期望从返回中得到的子集(上图):foreach($keypositions as $t) { echo $t['id'],"<br>"; }
当数组从一个函数传递到下一个函数时,我是否遗漏了什么?所有数组都是关联的。我故意没有在每个函数中包含冗长的代码,因为根据我在每次返回之前所做的测试,函数本身似乎正在完美地执行(这意味着我期望在数组中的内容在每个步骤中都是完整的)。我相信这可能与将返回值从一个函数传递到下一个函数有关?这里的任何方向将不胜感激。谢谢你。
好的。对不起。我的想法是不要把所有代码弄得一团糟。这里是。请记住,这是用于测试而不是最终的(例如,还没有 PHP 注入工作。)
public static function getKPSponsor($userid)
{
return self::getKPSponsors('positions.jobholder_uid = "' .$userid. '"');
}
public static function getKPSponsors($criteria = '')
{
$sponsor_levels = array();
$sponsor_list = array();
$criteria = " WHERE $criteria";
$db = Database::getInstance();
$mysqli = $db->getConnection();
$sql_query_sponsors = "SELECT positions.position_id AS id, jobholder_uid AS uid FROM positions $criteria";
$result_sponsors = $mysqli->query($sql_query_sponsors);
while ($sponsor_level = mysqli_fetch_assoc($result_sponsors)){
$sponsor_id = $sponsor_level['uid'];
$sponsor_level['items'] = self::getKPSponsors('positions.positionmgr_uid = "' .$sponsor_id. '"');
$sponsor_levels[] = $sponsor_level;
}
foreach($sponsor_levels as $r) {
$sponsor_list[] = $r['id'];
}
mysqli_free_result($result_sponsors);
unset($r);
return self::getKPList($sponsor_list);
}
public static function getKPList($arr)
{
$kppositions = array();
$db = Database::getInstance();
$mysqli = $db->getConnection();
$sql_query_keypositions = "SELECT key_positions.kp_id AS id, key_positions.kp_root, key_positions.kp_area, key_positions.c_ksa, key_positions.c_relationship, key_positions.c_rare, key_positions.urgency, positions.jobholder_uid, master.last_name, CONCAT(master.first_name,' ',master.last_name) AS full_name FROM key_positions INNER JOIN positions ON positions.position_id = key_positions.kp_sponsor INNER JOIN master ON positions.jobholder_uid = master.email_address WHERE key_positions.kp_sponsor IN (" . implode(",", $arr) . ");";
$result = $mysqli->query($sql_query_keypositions);
while ($kp3 = mysqli_fetch_assoc($result)) {
$kppositions[] = $kp3;
}
foreach($kppositions as $s) { // My testing ...
echo $s['kp_root'],"<br>";
}
mysqli_free_result($result);
return $kppositions;
}
如果这有进一步帮助,我的测试在返回之前的输出会产生:
1000014 1000015 1000016 1000012 1000006 1000022 1000022 1000017 1000018 1000018 1000019 1000020 1000021 1000021 1000008 1000009 10000101000010100001010000100100100004 1000005 1000005 10000001300000013 1000003 1000001 1000002 1000002 1000002
返回后的输出产生:
1000001 1000002
解决方案
推荐阅读
- proxy - 通过代理连接 Quickfix/n
- java - 根据 JMETER 中的给定键读取行值
- python - C# 错误中的 Iron Python {“type() 不接受关键字参数”}
- html - 使用 Cloudflare 自动更新 CSS 版本
- c++builder - 如何在 C++ 构建器中从 FDQuery 中清除数据
- react-native - 如何在多个屏幕之间进行底部标签导航?
- javascript - android设备angular11中的Video.js视频播放问题
- python - spacy 以字符串形式而不是在 uint8 上获取令牌
- jquery - Ajax 函数出错:在 null 上调用成员函数 setPosition()
- r - 基于非数字第三变量的热图轴重新排序 - ggplot2