PHP-Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, int given
PHP-Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, int given
在本地尝试使用给定的密码解密二进制文件。十六进制数据以0A分隔。在解密阶段,我的数组像 int 一样工作,我不知道为什么。有没有合适的解决办法?
php version: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);
}
}?>
就像@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);
在本地尝试使用给定的密码解密二进制文件。十六进制数据以0A分隔。在解密阶段,我的数组像 int 一样工作,我不知道为什么。有没有合适的解决办法?
php version: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); } }?>
就像@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);