foreachループがいつ終了してHTMLタグを閉じることができるかを調べようとしています。この質問をもう少し簡潔に改訂しています。私は今、データセットを配列として関数に渡し、より簡単にできるようにしたいと考えています。私はフィールドのいずれかが、foreachを通過するたびにうまくいかなかった最大値に当たったかどうかを判断する必要があります。それは次のパスまで最大であると思っています。それはをループとしてForeachループ内で最高の要素を取得する
Array
(
[0] => 3391
[ID] => 3391
[1] => 2
[SubID] => 2
[2] => 2
[ListType] => 2
[3] => 0
[IndentText] => 0
[4] => 3
[BaseGroup] => 3
[4] => 1
[Quantity] => 1
)
がどのように私は最高のサブID値を取得することができます
データセット配列は次のようになりますか?私はこのような関数の行に沿って考えていますが、各行で実行されたときに最高の値を得る方法を考えることはできません。
function getMax($index, $array) {
$array = array($array[$index]);
return max($array);
}
私は$ MAXID = getMax(「SUBID」、$配列)として、これを実行すると期待が、その後、実際にはどんな意味のある結果を与えるようにする方法を考え出したが、それは動作します一度していません:
if ($maxID == $row['SubID']) :
// CLOSING HTML HERE
endif;
...は、最後の行にあり、タグを閉じることができることをコードに伝えます。何か案は?
ここには機能全体がありますが、本当に質問は直接関連していないので、それが役立つかどうかはわかりません。
function Notes($rowEntry) {
// Create variables
$ListType = (isset($rowEntry['ListType'])) ? $rowEntry['ListType'] : "";
/* $ID = (isset($rowEntry['ID'])) ? $rowEntry['ID'] : ""; */
$SubID = (isset($rowEntry['SubID'])) ? $rowEntry['SubID'] : "";
$GroupNo = (isset($rowEntry['GroupNo'])) ? $rowEntry['GroupNo'] : "";
$Title = (isset($rowEntry['Title'])) ? $rowEntry['Title'] : "";
$SubPartNo = (isset($rowEntry['SubPartNo'])) ? $rowEntry['SubPartNo'] : "";
$SubDescription = (isset($rowEntry['SubDescription'])) ? LinkAbbvr($rowEntry['SubDescription']) : " ";
$SubPage = (isset($rowEntry['SubPage'])) ? $rowEntry['SubPage'] : "";
// SubQuantity field is integer so, to match original hardcopy, 0 used in place of X
// Condition below changes it back to X for display
$SubQuantity = (isset($rowEntry['SubQuantity'])) ? $rowEntry['SubQuantity'] : "";
$SubQuantity = ($SubQuantity == 0) ? "X" : $SubQuantity;
// Create Edit link to SubQuantity value
$EditSubQuantity = (isset($_SESSION['AccessLevel']) && $_SESSION['AccessLevel'] == 3)
? "<a href=\"/administration/adminforms.php?FormID=33&ID=$SubID\">$SubQuantity</a>"
: $SubQuantity;
// For note of a specific group by itself, ie Group 3.5890 page 98
// Uses style .groupcaption
if ($ListType == 1) :
if ($GroupNo && $Title) :
$last_groupnote = "";
if ($Title && $GroupNo != $last_groupnote) :
$last_groupnote = $GroupNo;
$NotesText = "<div class=\"groupcaption\">\n";
$NotesText .= "<div class=\"SubTitle\">$Title</div>\n";
$NotesText .= "</div>\n\n";
echo $NotesText;
endif;
endif;
// For indented sub-listings, ie Group 3.639 page 108
// This lists Quantity, PartNo and Description
// Uses style #css-subtable
elseif ($ListType == 2) :
global $TitleCaption;
$NotesText = "";
// Show Title column only once
if ($Title != $TitleCaption) :
$TitleCaption = $Title;
// Close part listing row table
$NotesText .= "</div>\n\n";
// Open subtable and title
$NotesText .= "<div id=\"css-subtable\">\n";
$NotesText .= "<div class=\"RowCaption\">$Title</div>\n\n";
endif;
if ($SubDescription && !is_null($SubDescription)) :
$NotesText .= "<div class=\"row\">\n";
$NotesText .= "<div class=\"col\">$EditSubQuantity</div>\n";
$NotesText .= "<div class=\"col\">$SubPartNo</div>\n";
$NotesText .= "<div class=\"col\">$SubDescription</div>\n";
$NotesText .= "</div>\n\n";
endif;
$subMax = getMax("SubID", $rowEntry);
// Check to see if last row
if ($SubID == $subMax) :
//if ($SubID == 15) :
// Close the subtable
$NotesText .= "</div>\n\n";
// Restart row table
if ($ListType < 5) :
$NotesText .= "<div id=\"css-table\">\n";
elseif ($ListType > 4) :
$NotesText .= "<div id=\"css-sublist$ListType\">\n";
endif;
endif;
echo $NotesText;
// For indented sub-listings description-only list, ie Group 1.322 page 16
// This lists Description only
// Uses style #css-subsingletable
elseif ($ListType == 3) :
global $rowCount;
$NotesText = "";
$rowCount++;
// Clost main style, open new one
if ($rowCount == 1) :
// Close part listing row table
$NotesText .= "</div>\n\n";
// Open subtable and title
$NotesText .= "<div id=\"css-subsingletable\">\n";
endif;
if ($SubDescription && !is_null($SubDescription)) :
$rowCount++;
$NotesText .= "<div class=\"row\">\n";
$NotesText .= "<div class=\"col\">$SubDescription</div>\n";
$NotesText .= "</div>\n\n";
endif;
if ($rowCount == 3) :
$NotesText .= "</div>\n\n";
// Restart row table
if ($ListType < 5) :
$NotesText .= "<div id=\"css-table\">\n";
elseif ($ListType > 4) :
$NotesText .= "<div id=\"css-sublist$ListType\">\n";
endif;
endif;
echo $NotesText;
// For single notes, ie Group 1.607 page 29
// Uses style #css-partnotes
elseif ($ListType == 4) :
$TitleCaption = "";
if ($Title) :
if ($Title != $TitleCaption) :
$TitleCaption = $Title;
// Close part listing row table
$NotesText = "</div>\n\n";
$NotesText .= "<div id=\"css-partnotes\">\n";
$NotesText .= "<div class=\"row\">\n";
$NotesText .= "<div class=\"col\">\n";
$NotesText .= "<div class=\"RowCaption\">$Title</div>\n";
$NotesText .= "</div>\n";
$NotesText .= "</div>\n";
$NotesText .= "</div>\n\n";
// Restart row table
if ($ListType < 5) :
$NotesText .= "<div id=\"css-table\">\n";
elseif ($ListType > 4) :
$NotesText .= "<div id=\"css-sublist$ListType\">\n";
endif;
echo $NotesText;
endif;
endif;
endif;
}
上記の関数から呼び出されている:最高SubID
を見つけるには
// This function used to simplify partsbook.php and partsbookdetails.php
// IN CONJUNCTION WITH ABOVE, FUNCTION PARTIALLY REPLACES OBSOLETE PartID()
function PartsList($sqlView) {
$rowView = DBConnect($sqlView, "Multiple", "pchome_packardsimperials");
if ($rowView) :
$last_groupno = "";
$last_id = "";
$rowNumber = 0;
foreach ($rowView as $row) :
$rowNumber++;
$ID = (isset($row['ID'])) ? $row['ID'] : "";
$ListType = (isset($row['ListType'])) ? $row['ListType'] : "";
$BaseGroup = (isset($row['BaseGroup'])) ? $row['BaseGroup'] : 0;
$GroupNo = (isset($row['GroupNo'])) ? $row['GroupNo'] : "";
$GroupName = (isset($row['GroupName'])) ? LinkAbbvr($row['GroupName']) : "";
$Name = (isset($row['Name'])) ? LinkAbbvr($row['Name']) : "";
$Title = (isset($row['Title'])) ? $row['Title'] : "";
$PartNo = (isset($row['PartNo'])) ? $row['PartNo'] : "";
$Models = (isset($row['Models'])) ? $row['Models'] : "";
$Description = (isset($row['Description'])) ? LinkAbbvr($row['Description']) : " ";
$PageNo = (isset($row['PageNo'])) ? $row['PageNo'] : "";
$SubPage = (isset($row['SubPage'])) ? $row['SubPage'] : "";
$RevDate = (isset($row['RevDate'])) ? $row['RevDate'] : "";
$Edition = (isset($row['Edition'])) ? $row['Edition'] : "";
// Choose variable for use in title of GroupNo() function
if ($ListType < 5) :
$ListName = $Name;
elseif ($ListType > 4) :
$ListName = $Title;
endif;
// Check to see if GroupNo is different than previous one
if ($GroupNo != $last_groupno || $rowNumber == 1) :
$last_groupno = $GroupNo;
$NewGroup = TRUE;
else :
$NewGroup = FALSE;
endif;
// Show GroupNo() captions only once per group
if ($NewGroup === TRUE) :
GroupNo($GroupNo, $NewGroup, $ListName, $rowNumber, $ListType);
endif;
if ($ListType < 5) :
// To prevent duplicates, check to see if ID is different than previous one before displaying
if ($ID != $last_id) :
$last_id = $ID;
PartRow($row);
endif;
Notes($row);
elseif ($ListType > 4) :
SpecialRow($row);
endif;
endforeach;
endif;
}
あなたのデータに「SubID」が1つだけある場合、「SubID」の最大の価値を得る目的は何ですか? – trincot
データセットの最大可能SubIDがわかったら、foreachループ内の行ごとに提示されているSubIDと比較して、データセットの最後にあることを知ることができます。 – DonP
具体的な質問に答えることができます。コードを投稿すると、より効率的なアプローチが可能です。 – fubar