PHP中如何将索引变量$i代入其他变量实现循环赋值?
解决方案
要实现循环生成动态命名的变量并完成赋值,你可以利用PHP的可变变量特性,通过字符串拼接的方式构建变量名并引用对应变量。修改后的代码如下:
$no_col = 10; for ($i = 1; $i <= $no_col; $i++) { // 动态获取$start1、$start2...变量的值 $start_var = ${'start' . $i}; // 生成$start_year_1、$start_year_2...变量并赋值 ${'start_year_' . $i} = date('Y', strtotime($start_var)); // 生成$start_month_1、$start_month_2...变量并赋值 ${'start_month_' . $i} = date('m', strtotime($start_var)); }
关键说明:
${'start' . $i}:通过拼接字符串"start"和循环变量$i,动态引用$start1、$start2等目标变量。${'start_year_' . $i}:同样通过字符串拼接构建变量名,实现动态赋值,最终生成$start_year_1、$start_year_2这类符合需求的变量。- 提取
$start_var是为了避免重复调用strtotime,优化代码执行效率。
更规范的替代方案(推荐):
可变变量虽然能解决问题,但用数组管理这类批量变量会更易维护和阅读,示例如下:
$no_col = 10; $start_dates = []; for ($i = 1; $i <= $no_col; $i++) { $start_var = ${'start' . $i}; $start_dates[$i] = [ 'year' => date('Y', strtotime($start_var)), 'month' => date('m', strtotime($start_var)) ]; } // 调用示例:获取第2个日期的年份 // echo $start_dates[2]['year'];
内容的提问来源于stack exchange,提问作者Va SA
相关产品推荐
相关产品推荐

