Birisi açıklayabilir misiniz / yorumlarla bu Ruby pasajını açıklama?

3 Cevap php

Birisi bu kodu yorum eklemek misiniz? Ya da, alternatif olarak, ne bu Ruby kod yalancı eşdeğer olurdu?

Yeterince basit görünüyor ama sadece PHP için bu dönüştürmek için yeterli Ruby bilmiyorum.

data = Hash.new({})
mysql_results.each { |r| data[r['year']][r['week']] = r['count'] }

(year_low..year_high).each do |year|
  (1..52).each do |week|
   puts "#{year} #{week} #{data[year][week]}"
  end
end

Herhangi bir yardım olursa olsun gerçekten takdir.

Teşekkürler!

3 Cevap

data = Hash.new({})
# create hash 'data'
mysql_results.each { |r| data[r['year']][r['week']] = r['count'] }
# maps each row from sql query to hash like this: data[2010][30] = 23
# So you can access 'count' from every year and week in very simple way

(year_low..year_high).each do |year|
# for (year = year_low; year <= year_high; year++) 
  (1..52).each do |week|
  # for (week = 1; week <=52; week++)
   puts "#{year} #{week} #{data[year][week]}"
   # printf("%d %d %d\n", year, week, data[year][week]);
  end
end

Sahte kod ile C karıştırma, ama ben yardımcı umut için özür dilerim!

Ilk bit sadece bu yüzden gibi bir dizi oluşturuyor:

$data[2009][17] = 10;

Bunun PHP eşdeğer olacaktır:

foreach ($mysql_results as $r){
  $data[$r['year']][$r['week']] = $r['count'];
}

İkinci bölüm aşağıdaki denk olur:

foreach(range($year_low, $year_high) as $year){
  foreach(range(1, 52) as $week){
    print $year.' '.$week.' '.$data[$year][$week]
  }
}

Umarım ki olur :)

$data = array();

#Build an array of 'count' per year/week
foreach($mysql_results as $r) {
    $data[$r['year']][$r['week']] = $r['count'];
}

#Loop through the $data variable, printing out the 'count' for each year in the array,
#and all 52 weeks that year
for($year = $year_min; $year <= $year_max; $year++) {
    for($week=1; $week<=52; $week++) {
        echo "$year $week {$data[$year][$week]}";
    }
}

Bu year_low ve year_high cari kod parçasında tanımsız değişkenler, ama onlar sizin için bilinen gerektiğini unutmayın.

Ayrıca, $ mysql_results veritabanı tarafından döndürülen tüm satırlarını içeren bir dizi olmalıdır.

Kısacası, aşağıdaki kod yapar:

  • Değerin 'sayısı' içeren sonra haftada yılda gruplanmış bir dizi, yapmak
  • Sırayla gösteren bu dizi, yıl, hafta, ve 'saymak' için değer, döngü varsa