PHP如何将变量与随机数拼接后调用对应的预定义变量
你当前的写法只是将字符s和随机数做了字符串拼接,得到的是s1、s2这类普通字符串,不会自动解析为对应的预定义变量值,因此输出不符合预期。
方案1:使用PHP可变变量实现
如果你要保留当前s1到s22的变量定义方式,可以用可变变量语法解析拼接后的变量名,对应代码修改为:
figure:before { content: '<?php $random_num = random_int(1, 22); $target_var = 's' . $random_num; echo $$target_var; ?>'; }
这里的$$target_var是PHP的可变变量用法,PHP会先读取$target_var的值(例如s1),再把这个值作为变量名去读取对应变量的内容。
方案2:使用数组存储(更推荐)
这种方式无需单独定义22个s开头的变量,代码可维护性更高,也规避了可变变量的潜在安全风险:
首先把所有变量值整理为数组:
<?php $platform_config = [ 'var(--vimeo)', 'var(--youtube)', // 剩余20个配置值依次填入数组即可 ]; ?>
然后CSS部分直接随机读取数组元素:
figure:before { content: '<?php echo $platform_config[array_rand($platform_config)]; ?>'; }
如果后续需要新增/删除配置,直接修改$platform_config数组即可,不需要调整随机读取的逻辑。
注意:CSS的
content属性的字符串值需要用引号包裹,因此上面的代码里把PHP输出的内容放在了单引号中间,避免CSS解析报错。
内容的提问来源于stack exchange,提问作者God of all wars
相关产品推荐
相关产品推荐

