#php #html #associative-array
#php #HTML #ассоциативный массив
Вопрос:
Мне нравится сортировать ассоциативный массив на два div на основе значения.
Вот что у меня есть сейчас:
function showDivs($array) {
/*
* sort en group by
*/
$luxury = false;
$no_luxury = false;
$return = '';
while (list($key, $value) = each($array)) {
if ($value["MinimumRate"] < 500) {
if ($no_luxury === false) {
$return .= '<div id="no_luxury" >';
}
$return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";
if ($no_luxury === false) {
$return .='</div>';
$no_luxury = true;
}
}
if ($value["MinimumRate"] > 500) {
if ($luxury === false) {
$return .='<div id="luxury" >';
}
$return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";
if ($luxury === false) {
$return .='</div>';
$luxury = true;
}
}
}
return $return;
}
Мой код работает некорректно.
Комментарии:
1. Его текущее неправильное поведение сэкономит всем 3 минуты.
2. если
MinimumRate
равно 500, то его не будет ни в одном div.
Ответ №1:
Div создается и закрывается только для первого элемента. Я думаю, вы имели в виду открыть его при запуске и закрыть в конце. Попробуйте это:
function showDivs($array) {
/*
* sort en group by
*/
$luxury = array();
$not_luxury = array();
foreach ($array as $value) {
if ($value["MinimumRate"] > 500) {
$luxury[] = $value;
} else {
$not_luxury[] = $value;
}
}
$return = '<div id="no_luxury" >';
foreach ($luxury as $value) {
$return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";
}
$return .= '</div>';
$return .= '<div id="luxury" >';
foreach ($luxury as $value) {
$return .= $value['Description'] . " : " . $value["MinimumRate"] . "<br />";
}
$return .= '</div>';
return $return;
}
Комментарии:
1. Ваша логика обратная:
$value["MinimumRate"] < 500 -> $luxury
кажется странным определением роскоши2. Спасибо, МитМаро, хорошая идея использовать массив tenp и хранить значения. Одна маленькая деталь, я заменил ваш первый foreach таким образом, чтобы он читался
$not_luxury as $value
кстати, как установить ваш ответ в качестве ответа??3. Приветствую вас, чтобы принять ответ, просто установите флажок под рейтингом ответа.
Ответ №2:
Если проблема в том, что MinimumRate = 500, вы должны сделать:
if ($value["MinimumRate"] <= 500) // this is your first 'if' in your code
или
if ($value["MinimumRate"] >= 500) // this is the second 'if' in your code