将项目推入数组并替换php

时间:2014-01-15 14:08:59

标签: php arrays session

我需要制作一个像这样的数组

$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]

1 个答案:

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

上述两种方法都可以转换为功能,使“更具便携性”。