亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建動態函數名?

如何創建動態函數名?

PHP
三國紛爭 2023-05-12 15:45:18
我正在使用根據頻率添加日期的碳。目前這是我的工作代碼。if ($repetition_frequency == 'Day') {   $test_date->addDays($repetition);} else if ($repetition_frequency == 'Week') {   $test_date->addWeeks($repetition);}else if ($repetition_frequency == 'Month') {   $test_date->addMonths($repetition);}else if ($repetition_frequency == 'Year') {   $test_date->addYears($repetition);}我的目標是刪除 if 條件并取決于我將通過 $repetition_frequency 調用的函數目標:ex: $repetition_frequency = 'Year';$test_date->'add'.$repetition_frequency->($repetition);// i want => $test_date->addYear->($repetition);我知道這行不通。有什么辦法可以實現嗎?
查看完整描述

3 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

您不需要動態函數名稱。這樣的代碼很難理解。就這樣做:


$test_date = Carbon\Carbon::today();? //2020-06-10


$repetition = 3;

$repetition_frequency = 'Year';


$test_date->modify($repetition." ".$repetition_frequency);


echo (string)$test_date;

輸出:


2023-06-10 00:00:00

除了“年”,它還適用于日、周、月等(參見單位相關格式)你甚至不需要 Carbon,DateTime 做得很好。



查看完整回答
反對 回復 2023-05-12
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

只需使用addUnit開箱即用的方法:

Carbon::now()->addUnit($repetition_frequency, $repetition)

它會無差別地采用Daydaydayscases/pluralization 和 Carbon 的任何支持單位。


查看完整回答
反對 回復 2023-05-12
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

可以做到,但你要么需要在變量中捕獲它,要么使用 {} 來分隔代碼


ex: $repetition_frequency = 'Year';


$function = 'add'.$repetition_frequency;


$test_date->$function($repetition);

還要注意開箱即用的日期添加功能,例如修改和添加月份,如果您要將 1 個月添加到 2020-01-31,您最終會得到 2020-03-03,這可能不是您想要的結果。addMonthNoOverflow如果期望的結果應該是 2020-02-29,Carbon 帶有一個方便的函數。


查看完整回答
反對 回復 2023-05-12
  • 3 回答
  • 0 關注
  • 180 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號