Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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_Function_For Loop_Auto Increment - Fatal编程技术网

用于更改值自动递增的PHP函数

用于更改值自动递增的PHP函数,php,function,for-loop,auto-increment,Php,Function,For Loop,Auto Increment,我有一个要求,我需要以以下格式插入user\u id 13310_userid_1 13310_userid_2 13310_userid_3 在哪里 13310 = $_GET['userid'] //user id from session userid = constant //constant text defined 1/2/3 = autoincrement value 这里的变化是当user\u id更改时,自动增量值将从开始插入,如下所示 13311_userid_1 133

我有一个要求,我需要以以下格式插入
user\u id

13310_userid_1
13310_userid_2
13310_userid_3
在哪里

13310 = $_GET['userid'] //user id from session
userid = constant //constant text defined
1/2/3 = autoincrement value
这里的变化是当
user\u id
更改时,自动增量值将从开始插入,如下所示

13311_userid_1
13311_userid_2
13311_userid_2
而不是

13311_userid_4
13311_userid_5
13311_userid_6
如何检查
用户id
是否已更改并从
1
插入自动增量值


谢谢

我不确定您是否需要它,但您可以使用数组来存储每个cont的增量:

$const = 'userid';
$user_id = '13310';
$array_increment[$user_id] =1;
foreach(array('Franck','Robert','You','Me') as $index=>$test){
    if($index==2)$user_id = '13311';
    if(!isset($array_increment[$user_id])){
        $array_increment[$user_id]=1;
    }

    $increment = $array_increment[$user_id];

    echo $user_id.'_'.$const.'_'.$increment.'<br />';
    $array_increment[$user_id]++;
}

您可以在临时会话中存储每个用户标识的增量值:

对于每个请求,检查会话中是否已经存在$_GET['userid'],如果没有创建值为零的会话。 增量为1,并使用此值创建字符串以插入到DB中

    //set up session if it is not already set


    if(!isset($_SESSION['users'][$_GET['userid'])){
    $_SESSION['users'][$_GET['userid']=0;
    }

    $_SESSION['users'][$_GET['userid']=$_SESSION['users'][$_GET['userid']+1;
    $user=$_GET['userid'].'_userid_'.$_SESSION['users'][$_GET['userid'];


   //insert $user into your DB or permanent storage.
   $db->insert($user);
(这应该是一个注释,但有点冗长)

只有当某个数据库出现在这里的某个地方时,您才有意义——但您从未明确说明情况是这样的,也没有说明它是哪个数据库

关系数据库设计(在很大程度上,非关系数据库设计)受规范化规则的约束。这些是描述数据结构的方法,可以防止您做愚蠢的事情。这违反了第一条规则


假设您正确地设计了系统,那么您会将这三个属性保留为单独的字段。但这并不能回答id是标称的、基数的还是序数的问题(对于序数,是否要求它们是连续的)。

在您将要说明的内容中?(DB、数组…)您将所有数据存储在哪里?无论如何,您只需要循环遍历数据,将其拆分为一个字符串,在最后一项中使用u,然后获取它的最后一个值。如果是3,则将计数器重置为1。@lolka\u bolka是,您已关闭,数据将作为
user\u id
列的主键插入。但是,考虑到
用户id的变化,如何循环这个问题呢?
$\u GET['user\u id']
是一个数组,还是它在每个请求中都作为一个值出现?如果是前者,只需将当前值与先前值进行比较,并根据需要进行增量/重置。如果是后者,则需要将值存储在某个位置(DB?)并进行比较。
$\u GET['user\u id']
不是一个数组,而是一个值。我们不需要在此处更改常量,但如果
$\u GET['user\u id']
发生更改,则需要更改增量值。
$\u GET['user\u id']
不是数组,而是一个值。一旦此val从
13310
更改为
13311
,自动递增编号将重置,计数器将再次设置为1。同样,在您的情况下,您必须将$array_increment存储在某个位置(bdd、txt、xml)并读取值以继续递增如果($index==2)$user_id='13311',这将如何
行指定我需要传递什么,而不是数组('frank','Robert','You','Me')
<代码>$\u GET['user\u id']
将是单个值。只有当
$\u GET['user\u id']
13310
更改为
13311
时,数字才会自动递增。只有当
$\u GET['user\u id']
从13310更改为13311时,数字才会自动递增。为什么这么说?无论id是否不同,该数字将每次递增。包含增量的行不处于任何状态。
    //set up session if it is not already set


    if(!isset($_SESSION['users'][$_GET['userid'])){
    $_SESSION['users'][$_GET['userid']=0;
    }

    $_SESSION['users'][$_GET['userid']=$_SESSION['users'][$_GET['userid']+1;
    $user=$_GET['userid'].'_userid_'.$_SESSION['users'][$_GET['userid'];


   //insert $user into your DB or permanent storage.
   $db->insert($user);