首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出只显示2位数字和2位数字。

输出只显示2位数字和2位数字。
EN

Stack Overflow用户
提问于 2022-09-09 17:42:49
回答 2查看 42关注 0票数 0

我正在对PHP中的反序列化字符串做一个特定的练习。实际上,这个字符串一旦被webapp序列化-反序列化,就会获取和连接两个字段'id‘和'uid’,然后将它们相加在一起形成一个4位数的字段。

示例:

代码语言:javascript
复制
O: 8: "userdata": 3: {s: 4: "role"; s: 5:"admin"; s: 2: "id"; i: 21; s: 3: "uid"; i: 32 ;}

该webapp将给我的结果:欢迎管理2132

我需要创建一个增量数字循环,以便拥有id和uid字段2循环数字,即:

代码语言:javascript
复制
O: 8: "userdata": 3: {s: 4: "role"; s: 5: "admin"; s: 2: "id"; i: 00; s: 3: "uid"; i: 00 ;}
O: 8: "userdata": 3: {s: 4: "role"; s: 5: "admin"; s: 2: "id"; i: 00; s: 3: "uid"; i: 01 ;}

依此类推,直到uid字段达到99,id字段开始添加+1并变为01,而uid字段必须始终执行相同的循环。

我是说这个:

代码语言:javascript
复制
O: 8: "userdata": 3: {s: 4: "role"; s: 5: "admin"; s: 2: "id"; i: 00; s: 3: "uid"; i: 99 ;}
O: 8: "userdata": 3: {s: 4: "role"; s: 5: "admin"; s: 2: "id"; i: 01; s: 3: "uid"; i: 00 ;}
O: 8: "userdata": 3: {s: 4: "role"; s: 5: "admin"; s: 2: "id"; i: 01; s: 3: "uid"; i: 01 ;}
O: 8: "userdata": 3: {s: 4: "role"; s: 5: "admin"; s: 2: "id"; i: 01; s: 3: "uid"; i: 02 ;}

我创建了这个脚本,这样我就有了4个增量数字,但问题是,为了获得所需的结果,我不能在id字段中声明2位数字,而在uid字段中声明另外2位数字。

代码语言:javascript
复制
<?php
for($a=0; $a< 10; $a++)
 { 
   for($b=0; $b< 10; $b++)
      {
          for($c=0; $c< 10; $c++) {
            for($d=0; $d< 10; $d++) {

              $y = ($a . $b. $c. $d);
              $plain = 'O:8:"userdata":3:{s:4:"role";s:5:"admin";s:2:"id";i:'.$y.';s:3:"uid";i:'.$y.';}';
              echo $plain. "\n";
            }
          }
          
      }
 }
?>

这些for循环的输出只不过是:

代码语言:javascript
复制
O:8:"userdata":3{s:4:"role";s:5:"admin";s:2:"id";i:0000;s:3:"uid";i:0000;}
O:8:"userdata":3{s:4:"role";s:5:"admin";s:2:"id";i:0001;s:3:"uid";i:0001;}
O:8:"userdata":3{s:4:"role";s:5:"admin";s:2:"id";i:0002;s:3:"uid";i:0002;}
O:8:"userdata":3{s:4:"role";s:5:"admin";s:2:"id";i:0003;s:3:"uid";i:0003;}
O:8:"userdata":3{s:4:"role";s:5:"admin";s:2:"id";i:0004;s:3:"uid";i:0004;}
EN

回答 2

Stack Overflow用户

发布于 2022-09-09 18:05:09

为什么你不直接数到从0000到9999,分裂成iduid,每个2位数?

代码语言:javascript
复制
for ($i = 0; $i < 1e4; $i++) {
    $str = "0000$i";
    $len = strlen($str);
    $id = substr($str, $len-4, 2);
    $uid = substr($str, $len-2, 2);
    echo "$id $uid<br>";
}
票数 1
EN

Stack Overflow用户

发布于 2022-09-09 20:13:28

谢谢你@IT高盛我解决了:

代码语言:javascript
复制
<?php

for ($i = 0; $i < 1e4; $i++) {
    $str = "0000$i";
    $len = strlen($str);
    $id = substr($str, $len-4, 2);
    $uid = substr($str, $len-2, 2);
   
    $string = 'O:8:"userdata":3:{s:4:"role";s:5:"admin";s:2:"id";i:'.$id.';s:3:"uid";i:'.$uid.';}';
    echo $string."\n";
}

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73665781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档