2014-02-11 44 views
1

我正在嘗試按照結果的第一個字母順序製作一個按字母順序排序的術語表,並將其標題從其中取出,然後返回其下的結果的完整標題。我遇到的問題是,當我的函數調用1 - Z的結果時,A - Z中的所有內容都會自動複製,1 - 9的結果只顯示一次。循環複製問題

這是創建的功能。

function business_listings($states){ 

    $dbquery = db_query("SELECT DISTINCT CityName FROM {zipcodes} WHERE StateName = '".ucfirst(arg(2))."' ORDER BY CityName ASC"); 

    $cityname = ''; 

    $cityname = '<nav id="alphabetize">'; 

    foreach (range('a', 'z') as $char) { 
     $cityname .= '<a href="#sort-'.$char.'">'.ucfirst($char).'</a>'; 
    } 

    $cityname = '</nav>'; 

    $curr_letter = ''; 
    $cityname = '<div class="alpha_wrapper">'; 

    foreach ($dbquery as $dbrow) { 

    $title_array = explode(' ', $dbrow->CityName); 
    $this_letter = substr($title_array[0], 0, 1); 

    //Here is where the problem starts to occur 
    if ($this_letter != $curr_letter) { 

     if (!empty($curr_letter)) { 
      $cityname .= '<div class="clear"></div></div><div class="alpha_wrapper">'; 
     } 

     $curr_letter .= $this_letter; 
     $cityname .= '<div id="sort-'.strtolower($this_letter).'" class="alpha_title">'; 
     $cityname .= $this_letter; 
     $cityname .= '</div>'; 
    }//end of if statement where problem is 

     $cityname .='<div class="cityname">'; 
     $cityname .= l($dbrow->CityName, $base_url.$_SERVER['REQUEST_URI'].'/'.strtolower(urlencode($dbrow->CityName))); 
     $cityname .= '</div>'; 
    } 

    return $cityname; 
} 

例如,循環是這樣的。

<div headerdiv>1</div> 
10 palms 
100 palms 
1000 palms 

<div headerdiv>2</div> 
20 palms 
200 palms 
2000 palms 


<div headerdiv>a</div> 
apple 1 
<div headerdiv>a</div> 
apple 2 
<div headerdiv>a</div> 
apple 3 
<div headerdiv>a</div> 
apple 4 

這繼續直到Ž 頭的div應只給一個結果和蘋果1 2 3和4應該是它下面的所有方式。

如果我的示例沒有更具描述性的話,我還附上了截圖。

enter image description here

有沒有人有什麼建議?

感謝

回答

2

如果您連接到$this_letter$curr_letter$curr_letter連續值會11212A12AB12ABC等。因此,$this_letter != $curr_letter將在您的foreach循環的每次迭代中評估爲true。在你的代碼行負責這樣的不良行爲是這樣的:

$curr_letter .= $this_letter; // concatenate 

您應該更改行:

$curr_letter = $this_letter; // do not concatenate 
+0

啊確定我沒有聽清楚。謝啦。 – Suzed

+0

不客氣。 –