é™æ€å˜é‡åœ¨å‡½æ•°è°ƒç”¨æ—¶ä¸é€’增

时间:2016-02-08 11:45:34

标签: php static token

function genTokenNo()
{
    static $i=0;
    $i=$i+1;
    return str_pad($i, 5, '0', STR_PAD_LEFT);
}

当我在其他文件中调用此函数时,函数ä¸ä¼šè¿”回唯一值(递增值)。此外,当我在åŒä¸€ä¸ªæ–‡ä»¶ï¼ˆå‡½æ•°çš„ä½ç½®ï¼‰ä¸­å›žæ˜¾æ­¤å‡½æ•°æ—¶ï¼Œå®ƒå·¥ä½œæ­£å¸¸ã€‚ 我知é“é™æ€å˜é‡èŒƒå›´çš„概念,因为我已ç»å°è¯•è¿‡å°†$ i替æ¢ä¸º$ _SESSION [' i'],但没有预期的结果。 æå‰è°¢è°¢ã€‚

5 个答案:

答案 0 :(得分:2)

请注æ„,$i的值ä¸ä¼šä¿ç•™ã€‚因此,无论何时å‘æœåŠ¡å™¨è¿è¡Œæ–°è¯·æ±‚,都会é‡æ–°åŠ è½½è„šæœ¬å¹¶å°†$ié‡ç½®ä¸º0。

è¦åœ¨æ¯ä¸ªç”¨æˆ·çš„会è¯ä¸­ä¿ç•™å˜é‡ï¼Œè¯·ä½¿ç”¨$SESSION['i'],但正如您已ç»å°è¯•è¿‡çš„,æ¯ä¸ªä¼šè¯éƒ½æ˜¯å”¯ä¸€çš„,而ä¸æ˜¯å…¨å±€çš„。

è¦ä½¿ç”¨fopen / flock / fread / fwrite / fclose函数,您需è¦åœ¨ç£ç›˜ä¸Šå­˜å‚¨å…¨çƒå”¯ä¸€ç¼–å·ã€‚

答案 1 :(得分:0)

对于å•ä¸ªè¯·æ±‚,它应该å¯ä»¥æ­£å¸¸å·¥ä½œ -

function genTokenNo()
{
    static $i=0;    
    $i=$i+1;
    return str_pad($i, 5, '0', STR_PAD_LEFT);
}

echo genTokenNo() . ' - ' . genTokenNo() . ' - ' . genTokenNo();

<强>输出

00001 - 00002 - 00003

但是如果您多次请求,则æ¯æ¬¡è¯·æ±‚都会é‡ç½®è¯¥å€¼ï¼Œå¹¶ä¸”æ¯æ¬¡å“应都相åŒã€‚我建议将值存储在数æ®åº“或æŸä¸ªæ–‡ä»¶ä¸­ã€‚在这ç§æƒ…况下使用seesion woludä¸å¯é ã€‚

答案 2 :(得分:0)

您的结构如下所示:

<强> file1.php

function genTokenNo()
{
    static $i=0;
    $i=$i+1;
    return str_pad($i, 5, '0', STR_PAD_LEFT);
}

<强> file2.php

include('file1.php');
//^^^^^^^^^^^^^^^^^^^ Include file before call that function.

echo genTokenNo(); //00001
echo "<br />";
echo genTokenNo(); //00002
echo "<br />";
echo genTokenNo(); //00003
echo "<br />";
echo genTokenNo(); //00004

答案 3 :(得分:0)

<强> file1.php

<?php
    function genTokenNo()
    {
        static $i=0;
        $i=$i+1;
        return str_pad($i, 5, '0', STR_PAD_LEFT);
    }
?>

<强> file2.php

<?php
include('file1.php');
$sql = "INSERT INTO table SET TokenNo='".genTokenNo()."' ";
mysql_query($sql);
?>

答案 4 :(得分:-1)

  

当函数存在时,则丢失é™æ€å˜é‡çš„值

if(isset($_SESSION['i']))
   $_SESSION['i']++;
else
   $_SESSION['i']=0;