2016-03-29 2 views
-4

Как я могу сортировать по значению следующего кодPHP: Сортировка внутри Еогеаспа

$countries = array ('Europe/Rome', 'Europe/Athens', 'America/Tijuana', 'Canada/Atlantic', 'Europe/Amsterdam'); 
foreach ($countries as $country => $country_offset) { 
$offset = timezone_offset_get(new DateTimeZone($country_offset), new DateTime()); 
echo $offset . '</br>'; 
} 
+1

Зачем вам сортировать его внутри foreach? Почему бы тебе не разобраться с ним? –

+1

сортировать _how_? что ты пробовал? – Federkun

+0

Как @EddeAlmeida сказал, что вы должны сортировать данные до 'loop'ing или используя' foreach'. Это сделает ваш мир (и время выполнения) намного более простым. –

ответ

2

Как я понял вещи, вам нужно отсортировать $ значения смещения. Если да, то на следующее:

$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 />"; 
} 
+0

Я рад, что это помогло, @Avel. –

+1

Еще один вопрос: можно ли нажать «$ offsets» вместе с ключом? Я имею в виду что-то вроде этого 'echo $ offset. $ key; ' – Avel

+0

Я отредактировал ответ, чтобы включить это, @Avel. –

Смежные вопросы