我有一個PHP函數,其中傳遞了一個字符串或列名稱數組。不幸的是,這取決於我得到的列名的數量會變得有點麻煩和麻煩。根據存在的數組鍵的數量動態構建if語句
因此,是否有一種方法可以重寫我的if語句,以便我可以根據數組中的元素數量動態地生成條件?
我通常會運行一次檢查來查看數組中是否有值,但由於這些是另一個數組的關鍵值,因此會使事情更加複雜。以下是我目前的代碼。
private function pushToArray($list, $columnName, $date) {
$array = [];
foreach($list as $item) {
if (is_array($columnName)){
if ($date == $item[$columnName[0]] || $date == $item[$columnName[1]]) {
array_push($array, $item);
}
} else {
if ($date == $item[$columnName]) {
array_push($array, $item);
}
}
}
return $array;
}
正如在這裏可以看到,在我的元素陣列增加,我將不得不增加額外的,如果條件來處理更大的陣列設置。我想避免的事情。
編輯: 現在,我使用laravel作爲我的應用程序的框架。我正在嘗試生成一個數組,用於填充即將發生的事件系統的視圖。 這裏是當前呼叫的樣本:
$separatedArray = $this->pushToArray($this->separatedList(), 'destroyed_date', $currentDate);
$travelsArray = $this->pushToArray($this->travelsList(), ['leave_date','return_date'], $currentDate);
$trainingUsersArray = $this->pushToArray($this->trainingUsersList(), 'due_date', $currentDate);
下面是一些代碼的樣本之前,我把它搬到自己的功能。
$separatedArray = $travelsArray = $trainingUsersArray = [];
$currentDate = $date->format('Y-m-d');
foreach($separatedList as $user) {
if ($currentDate == $user->destroyed_date) {
array_push($separatedArray, $user);
}
}
foreach($travels as $travel) {
if ($currentDate == $travel->leave_date || $currentDate == $travel->return_date) {
array_push($travelsArray, $travel);
}
}
foreach($trainingUsers as $trainingUser) {
if ($currentDate == $trainingUser->due_date) {
array_push($trainingUsersArray, $trainingUser);
}
}
聽起來像你真正擁有的是數據庫設計問題。你能否詳細說明你的真實目標是什麼,並提供一些示例數據?請提供示例輸入和所需輸出。 – Dave
我已更新我的原始查詢,我希望這可以幫助。 –