【问题标题】:PHP-Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, int given [closed]PHP 致命错误:未捕获的 TypeError:count():参数 #1 ($value) 必须是 Countable|array 类型,给定 int [关闭]
【发布时间】:2021-11-27 14:11:32
【问题描述】:

本地尝试使用给定密码解密二进制文件。数据以十六进制的 0A 分隔。在解密阶段,我的数组就像一个 int,我不知道为什么。有没有合适的解决办法?

  • php版本:8.0.11

  • 试图重新安装 xampp

  • 尝试过的铸件

     <?php
             if(count($_POST)>0)
             {
    
                 $ciper = array(5, -14, 31, -9, 3);
    
                 $dec_arr = [];
                 $ind = 0;
                 $handle = fopen("secret.txt", "r");
                 if ($handle) {
                     while (!feof($handle)) {
                         $hex = bin2hex(fread ($handle , 1 ));
                         $dec_arr[$ind] = hexdec($hex);
                         $ind++;
                     }
                     fclose($handle);
                 }
                 unset($dec_arr[(count($dec_arr)-1)]);                   
    
                 $raw_data = "";
                 for($i = 0, $k = 0; $i < count($dec_arr); $i++)//Warning: Trying to access array offset on value of type int
                 {                           
                     if($dec_arr[$i]==10)
                     {
                         $dec_arr[$i] = 59;
                         $k = 0;
                     }
                     else
                     {
                         $dec_arr = ((($dec_arr[$i] + 256) - $ciper[$k])%256);//Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, int given
                     }
                     $raw_data .= chr($dec_arr[$i]);
                     $k = (($k+1)%5);                    
                 }
             }?>
    

【问题讨论】:

  • $dec_arr = ((($dec_arr[$i] + 256) - $ciper[$k])%256); 您正在将 $dec_arr 从数组更改为数字。这将导致循环的任何后续迭代失败
  • 谢谢@aynber!现在很清楚了。

标签: php xampp


【解决方案1】:

就像@aynber 提到的那样,您正在为 $dev_arr 分配一个 int 值。 你的线应该是

$dec_arr[$i] = ((($dec_arr[$i] + 256) - $ciper[$k])%256);

你也可以替换

unset($dec_arr[(count($dec_arr)-1)]);

array_pop($dec_arr);

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    相关资源
    最近更新 更多