You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Repl.it中通过环境变量正确创建PHP数组随机选取密钥

问题原因

你当前代码逻辑错误的核心原因是:getenv()读取到的环境变量值是完整的字符串类型,直接把整个字符串传入array()构造函数,只会得到一个长度为1的数组——唯一的元素就是你存储的所有密钥拼接成的整段文本,array_rand()永远只能取到这唯一的元素,随机分发逻辑自然失效。

修复方案

你只需要在读取到环境变量字符串后,按照你存储密钥时用的分隔符把字符串拆分成数组即可,从你的环境变量配置形式看,你是每个密钥单独占一行存储,直接用换行符拆分就行,完整可用代码如下:

<?php
// 读取存储密钥的环境变量
$loadstring = getenv('cheatxkeys');

// 按换行符拆分字符串为数组,同时过滤空行、首尾空白字符,避免抽到无效空值
$items = array_filter(
    explode(PHP_EOL, $loadstring),
    fn($key) => trim($key) !== ''
);
// 重置数组索引,避免过滤空值后键名不连续引发array_rand报错
$items = array_values($items);

// 随机选取一个密钥
$trollitem = $items[array_rand($items)];
?>

适配说明

  • 如果你存储密钥时用的不是换行分隔,而是英文逗号、竖线|等其他分隔符,只需要把explode()函数的第一个参数替换成你实际用的分隔符即可,比如逗号分隔就写explode(',', $loadstring)
  • 建议额外加一层兜底校验,避免环境变量配置错误导致页面报错,参考代码:
<?php
$loadstring = getenv('cheatxkeys');
if (!$loadstring) {
    // 替换为你自己的错误处理逻辑
    exit("密钥配置加载失败");
}

$items = array_filter(
    explode(PHP_EOL, $loadstring),
    fn($key) => trim($key) !== ''
);
$items = array_values($items);

if (empty($items)) {
    exit("无有效可用密钥");
}

$trollitem = $items[array_rand($items)];
?>

内容的提问来源于stack exchange,提问作者grf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:27:41