Закажите свои результаты с помощью series_id
, так что все продукты с тем же значением будут вместе.
$stmt = $pdo->prepare("SELECT series_id, product_name
FROM yourTable
ORDER BY series_id");
$stmt->execute();
Затем, показывая результаты, покажите заголовок Серии и запустите новый <ul>
всякий раз, когда он изменяется:
$last_series = null;
echo "<ul>\n";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($row['series_id'] != $last_series) {
if ($last_series) {
echo "</ul></li>\n";
}
echo "<li>" . $row['series_id'] . " Series Product\n";
echo "<ul>\n";
$last_series = $row['series_id'];
}
echo "<li>" . $row['product_name'] . "</li>\n";
}
if ($last_series) {
echo "</li>\n";
}
echo "</ul>\n";
Я полагаю, что обоснование позади NOT NULL состоит в том, что, когда передано в качестве параметра, он, как ожидают, для метода не должен потенциально обрабатывать исключение нулевой ссылки.
при передаче пустого указателя, и метод пытается сделать что-то с e, это получит исключение нулевой ссылки с EventArgs. Пустой это не будет.
Если Вы используете метод общего назначения, который имеет EventHandler
подпись, которой это называют от любого обработчика событий и передают и object sender
и EventArgs e
, это может звонить e.ToString()
, например, для входа событий, не вызывая беспокойство об исключении нулевого указателя.
Bundle.main
к Bundle(for: ...)
добивается цели. По-видимому, Bundle.main
недоступно во время проектирования.
– crizzis
3 October 2016 в 09:42
Я использовал долгое время "новый EventArgs ()" вместо "EventArgs. Пустой"... Я думаю, что важное должно передать что-то, что не вызовет Пустую исключительную ситуацию.
Я верю EventArgs.Empty
, используется для поддержания соглашения передачи спора с событием, даже если ни один не необходим.
Продавцы Mitchel отправили другую половину моей причины на полпути через мое сообщение: это предотвращает исключение нулевой ссылки, должен метод пытаться сделать что-то с тем аргументом (помимо проверки, если это является пустым).
EventArgs.Empty
в основном делает работу глобально определенного Аргумента События без дополнительной информации.
Для предоставления подобного примера поддержания соглашения, наше использование команды string.Empty
для инициализации строки, потому что в других отношениях различные кодеры могли бы использовать newString = ""; or newString = " "; or newString = null;
, все из которых могут привести к различным результатам для различных условий проверки.
А (немного педантичная) причина использовать EventArgs.Empty
по сравнению с new EventArgs()
состоит в том, что первый не инициализирует новое EventArgs
, сохраняя небольшой объем памяти.
init(frame:)
. Как только Вы добавляете это (и вытяните весь код инициализации в [приблизительно 111] функция), это хорошо работает и показывает в IB. Посмотрите больше информации здесь: stackoverflow.com/questions/31265906/…
– Dimitris
2 December 2018 в 08:35
EventArgs.Empty
является экземпляром шаблона объекта Null .
По сути, наличие объекта, представляющего «нет значения», чтобы избежать проверки на null, когда используя его.