我正在尝试制作一个程序,生成从0到255的随机数.看起来很简单!我这样做了:
extern crate rand;
use rand::Rng;
fn main() {
println!("Guess the number!");
let random_number: u8 = rand::thread_rng().gen_range(0, 255);
println!("Your random number is {}", random_number);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但这种方法的问题是不包括数字255:
该
gen_range
方法将两个数字作为参数,并在它们之间生成一个随机数.它包含在下限但在上限独占.
当我尝试这样做时:
let random_number: u8 = rand::thread_rng().gen_range(0, 256);
Run Code Online (Sandbox Code Playgroud)
Rust将生成警告,因为u8
只接受0到255之间的值.
warning: literal out of range for u8
--> src/main.rs:6:61
|
6 | let random_number: u8 = rand::thread_rng().gen_range(0, 256);
| ^^^
|
= note: #[warn(overflowing_literals)] on by default
Run Code Online (Sandbox Code Playgroud)
如何在不改变random_number
变量类型的情况下解决这个问题?
PHP 7.4 引入了箭头函数。它还引入了隐式按值范围绑定,从而消除了对use
关键字的需要。
现在,如果我们想通过引用常规匿名函数来使用闭包范围之外的变量,我们将这样做:
$num = 10;
call_user_func(function() use (&$num) {
$num += 5;
});
echo $num; // Output: 15
Run Code Online (Sandbox Code Playgroud)
但是使用箭头函数似乎是不可能的
$num = 10;
call_user_func(fn() => $num += 5);
echo $num; // Output: 10
Run Code Online (Sandbox Code Playgroud)
那么如何$num
通过引用来使用变量呢?
这是我的错误标题:
致命错误:未捕获类型错误:不支持的操作数类型:C:\xamppp\htdocs\file\thefile\config.php 中的 string + int:105 堆栈跟踪:#0 C:\xamppp\htdocs\file\thefile\category.php( 84): alphaID('f', true) #1 {main} 在第 105 行 C:\xamppp\htdocs\file\thefile\config.php 中抛出
第105行的错误:
{$out = $out + strpos($index, substr($in, $t, 1)) * $bcp;}
Run Code Online (Sandbox Code Playgroud)
这是代码:
<?php
//fungsi encrypt id
function alphaID($in, $to_num = false, $pad_up = false, $pass_key = null)
{
$out = '';
$index = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$base = strlen($index);
if ($pass_key !== null) {
for ($n = 0; $n < strlen($index); $n++) {
$i[] = substr($index, $n, 1);
}
$pass_hash = hash('sha256',$pass_key);
$pass_hash = …
Run Code Online (Sandbox Code Playgroud) 在处理以下代码时,我注意到这declare(strict_types=1)
对回调函数的参数没有影响array_walk()
<?php
declare(strict_types=1);
function myCallBack(int $value, $key) {
echo $value;
}
function myFunc(int $value, $key) {
echo $value;
}
$myArr = array("eggs" => 4, "Butter" => 4, "meat" => 4.5);
echo 'myCallBack..';
array_walk($myArr, 'myCallBack'); // Output: 444
echo ' <br />myFunc..';
myFunc(4.2, 'eggs'); // Output:Fatal error: Uncaught TypeError: Argument 1 passed to myFunc() must be of the type integer
?>
Run Code Online (Sandbox Code Playgroud)
我期待 php 抛出异常而不是444
因为 [meat] 值$myArr
不是整数!
显然 php 忽略了 [meat] in$myArr
是float …
我将 VS Code 连接到 WSL,当我尝试在我的index.php
文件中保存更改时,会显示以下消息。
我试图改变的权限var/www/html
使用chmod
,但什么都没有改变。
那么如何让VS代码修改文件呢?
linux windows-10 visual-studio-code windows-subsystem-for-linux
我刚装了Opcache
,一切似乎工作得很好,但是当我在添加一个PHP文件opcache.preload
中php.ini
并重新启动Apache服务器无法启动。另一方面,在 CLI SAPI 中预加载工作正常!
当我注释掉opcache.preload
并重新启动时,Apache 服务器工作
由于这个问题没有发出任何错误,我查找了 Apacheerror_log
文件,结果发现问题是我没有定义 opcahe 预加载用户
尚未定义致命错误“opcache.preload_user”
但根据PHP 文档
出于安全原因,不允许以 root 身份预加载代码。该指令有助于让预加载以另一个用户身份运行。
我在我的个人电脑上工作,在WSL下运行 Ubuntu
所以请指导我我该怎么做?我应该添加什么用户?
PHP 8.1 引入了never
返回类型,它是什么?是什么样的区别never
和void
?
从PHP 7开始,可以Fatal Errors
通过捕获Error
类或Throwable
接口来捕获,但由于某种原因,当触发"致命错误:未找到特征"时,我无法做到这一点.
try {
class Cars {
use Price;
}
} catch (Error $e) {
echo $e->getMessage(); // Output : Fatal error: Trait 'Price' not found in [..] on line [..]
}
Run Code Online (Sandbox Code Playgroud)
没有抓到错误!! 所以我想出了一个解决方案
try {
if (trait_exists('Price')) {
class Cars{
use Price;
}
} else {
throw new Error('Trait Price not found');
}
} catch (Error $e) {
echo $e->getMessage(); // Output : Trait Price not found
}
Run Code Online (Sandbox Code Playgroud)
为什么Fatal Error
在第一个例子中没有被抓住? …
根据PHP手册
如果将 Pure Enum 序列化为 JSON,则会抛出错误。如果将支持的枚举序列化为 JSON,则它将仅由其值标量以适当的类型表示。两者的行为都可以通过实现 JsonSerialized 来覆盖
让我们尝试实现一下JsonSerializable
enum Suit implements JsonSerializable
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
public function jsonSerialize(): array {
return [1, 2, 3, 4];
}
}
echo json_encode(Suit::cases());
Run Code Online (Sandbox Code Playgroud)
它打印:
[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
Run Code Online (Sandbox Code Playgroud)
为什么[1,2,3,4]
重复4次?
如何控制enum
序列化过程中的每个案例?
php ×7
php-7.4 ×2
php-8.1 ×2
apache ×1
array-walk ×1
aws-java-sdk ×1
callback ×1
enums ×1
fatal-error ×1
java ×1
linux ×1
php-8 ×1
random ×1
return-type ×1
rust ×1
traits ×1
windows-10 ×1