我需要制作一个像这样的数组
$privateMsgIdArray = array("idlistener" => $idlistener, "maxMsgId" => $lastMsgId);
我需要将maxMsgId替换为相应的idlistener,如果我传递的idlistener不存在则在数组中创建新条目。
我对如何提取与idlistener相对应的maxMsgId值感到困惑。
换句话说,我只需要传递一次idlisteners的新值,并在每次它们不等于相应的idlistener时替换maxMsgId。 如果idlistener字段不存在,则创建它(推入数组)。
我将旧数组传递给当前运行中的会话和新数组。 跑步后我换掉它们。
我认为这听起来有点令人困惑。
e.g 我们已经有这样一个数组: [15] [200]
下一次调用maxMsgId是210 数组应该是 [15] [210]
下一次通话我们有一个新的侦听器ID,其中包含maxMsgId 30 数组应该是 [15] [210] [16] [30]
答案 0 :(得分:0)
您应该能够通过快速循环完成此任务:
// your "new" values
$idListener = 15;
$maxMsgId = 210;
// loop over the array to see if it contains the `idlistener` you want
$end = count($privateMsgIdArray);
for ($i = 0; $i < $end; $i++) {
if ($privateMsgIdArray[$i]['idlistener'] == $idListener) {
// we found it! overwrite the `maxMsgId` field
$privateMsgIdArray[$i]['maxMsgId'] = $maxMsgId;
break;
}
}
if ($i == $end) {
// we reached the end of the array without finding the `$idListener`;
// add a new entry =]
$privateMsgIdArray[] = array(
'idlistener' => $idListener,
'maxMsgId' => $maxMsgId
);
}
这是一种相当暴力的方法,如果效率是你所追求的,那么在{{idlistener
值及其索引中创建“缓存”式方法是明智的。 1}}数组。
例如:
$privateMsgIdArray
上述两种方法都可以转换为功能,使“更具便携性”。