2016-03-29 18 views
-4

içine Sıralama nasıl sıralamak i değeriyle Bazı şeyleri anlamış gibi, $ değerleri ofset sıralamak gerekirPHP: foreach

$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

yapabilir böylece: istediğin gibi, yapabileceğin, anahtarını eklemek için Neden foreach içinde sıralamanız gerekiyor? Neden onu dışarıda sıralamıyorsun? –

+1

sort _how_? ne denedin – Federkun

+0

@EddeAlmeida, verileri "döngü" veya "foreach" kullanmadan önce sıralamanız gerektiğini söyledi. Dünyanızı (ve yürütme sürelerini) çok daha basit hale getirecek. –

cevap

2

Aşağıdaki kod can. Eğer öyleyse, o aşağıdakilere: görebileceğiniz gibi, sıralama sonra (çoğul, $ kaydırmalar) her yeni diziye elde edilen ofset $ itmek gerekir ve

$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) 

yanında

, sizin inşaat bir noktaya eksik: Burada $ ülke Kodunuzun geri kalanında kullanmayın $ ülkeler dizinin sayısal endeksi olacaktır. O zaman unutun ve sadece elemanlarla çalışın.

Umutlar size yardımcı olur!

OBS:

asort($offsets); 
$keys = array_keys($offsets); 
foreach($keys as $key) { 
    echo $offsets[$key] . $key . "<br />"; 
} 

Fonksiyon asort tuşları korur, sen bölgelerin isimlerini istiyorsanız

asort($offsets); 
$keys = array_keys($offsets); 
foreach($keys as $key) { 
    echo $offsets[$key] . " - " . $countries[$key] . "<br />"; 
} 
+0

Yardım ettiğine sevindim, @Avel. –

+1

Bir soru daha, $ offset'leri anahtarla birlikte itmek mümkün mü? Bu "echo $ offset" gibi bir şey elde etmek istiyorum. $ key; ' – Avel

+0

Bunu yanıtlamak için cevabı düzenledim, @Avel. –