Как я понял вещи, вам нужно отсортировать $ значения смещения. Если да, то на следующее:
$offsets = Array();
$countries = array ('Europe/Rome', 'Europe/Athens', 'America/Tijuana', 'Canada/Atlantic', 'Europe/Amsterdam');
foreach ($countries as $country_offset) {
$offset = timezone_offset_get(new DateTimeZone($country_offset), new DateTime());
array_push($offsets, $offset);
}
asort($offsets);
foreach($offsets as $offset) {
echo $offset . "<br />";
}
Как вы можете видеть, вы должны нажать каждые $ компенсировано полученные в новый массив ($ Смещения, во множественном числе), а затем сортировать его.
Кроме того, ваша конструкция
foreach ($countries as $country => $country_offset)
отсутствует пункт: $ страна здесь будет числовой индекс $ стран массива, которые вы не используете в остальной части кода. Затем просто забудьте об этом и выполните работу с элементами, как в
foreach ($countries as $country_offset)
Надеюсь, это поможет!
OBS: Для того, чтобы включить ключ, как вы просили, вы можете сделать:
asort($offsets);
$keys = array_keys($offsets);
foreach($keys as $key) {
echo $offsets[$key] . $key . "<br />";
}
Функция asort сохраняет ключи, так что если вы хотите, имена зон, которые вы можете сделать
asort($offsets);
$keys = array_keys($offsets);
foreach($keys as $key) {
echo $offsets[$key] . " - " . $countries[$key] . "<br />";
}
Зачем вам сортировать его внутри foreach? Почему бы тебе не разобраться с ним? –
сортировать _how_? что ты пробовал? – Federkun
Как @EddeAlmeida сказал, что вы должны сортировать данные до 'loop'ing или используя' foreach'. Это сделает ваш мир (и время выполнения) намного более простым. –