2012-01-24 44 views
0

我正在處理需要用字符分隔對數組進行內插的項目。我在項目的其他部分已經成功地使用了joinimplode,但是我無法在本節中使用它。如何從字符串開頭刪除PHP Array Implode字符

$dbQuery = "SELECT ftc.*, fc.name 
      FROM facilities f 
      LEFT JOIN facility_to_category ftc ON f.fid = ftc.fid 
      LEFT JOIN facility_categories fc ON ftc.cid = fc.cid 
      WHERE f.listing_year = '2011' 
       AND fc.parent_cid = '2' 
       AND f.fid = ('".$listing_fid."')"; 
    $dbResult = $dbc->query($dbQuery,__FILE__,__LINE__); 
    $num_results = $dbc->num_rows($dbResult); 
    echo '<h3>Demographics</h3> 
    <div>'; 
    while($catdata = $dbc->fetch($dbResult)) { 
     $demographics = array(); 
     $demographic_names = array('',trim($catdata->name)); 
     $demographics = implode(' '.chr(149).' ',$demographic_names); 
     print $demographics; 
    } 

結果是這樣的: '.CHR(149)' 的

Demographics 
• Affluent • Children • Hard-to-Reach • Parents 

代替

Demographics 
Affluent • Children • Hard-to-Reach • Parents 

我已經使用了雙引號,而不是單引號括起來嘗試。我試過用逗號或者小節或者空格。我嘗試過不同的修剪方式,而不是修剪$catdata->name

我也想過嘗試字符串連接,但最後我會在最後加上一個額外的字符而不是開頭。 Implodejoin似乎是更好的方法。

我缺少什麼?

+0

'$ demographic_names [0]'爲空嗎?另外,爲什麼你要設置'$ demographics = array();'然後幾乎立即把它變成一個字符串? –

回答

1

謝謝大家,爲您的幫助!我結束了重新格式化查詢和數組。下面是最終代碼:

$dbQuery = "SELECT ftc.*, fc.name 
      FROM facilities f 
      LEFT JOIN facility_to_category ftc ON f.fid = ftc.fid 
      LEFT JOIN facility_categories fc ON ftc.cid = fc.cid 
      WHERE f.listing_year = '2011' 
       AND fc.parent_cid = '2' 
       AND f.fid = ('".$listing_fid."')"; 
    $dbResult = $dbc->query($dbQuery,__FILE__,__LINE__); 
    $num_results = $dbc->num_rows($dbResult); 
    echo '<h3>Demographics</h3> 
    <div>'; 
    while($catdata = $dbc->fetch($dbResult)) { 
     $demographics = array(); 
     if (is_array($demographics)) { 
     $demographic_names[] = trim($catdata->name); 
     } 
    } 
    $demographics = join(' '.chr(149).' ',$demographic_names);   
    print $demographics; 

結果是:

Demographics 
Affluent • Children • Hard-to-Reach • Parents 

希望這會有所幫助別人!

1

我不知道我明白你正在嘗試做的,但爲什麼不使用

$demographics_names = array(); 
while($catdata = $dbc->fetch($dbResult)) { 
    array_push($demographics_names, trim($catdata->name)); 
} 
$demographics = implode(' '.chr(149).' ',$demographic_names); 
print $demographics; 
+0

移動while語句之外的內爆幫助! – deewilcox

0

你插入一個空白元素到數組,你爆:

$demographic_names = array('',trim($catdata->name)); 
          ^--- here 
+0

謝謝 - 我嘗試刪除它,但它以某種方式阻止了加入角色的工作。結果是AffluentChildrenHard-to-ReachParents – deewilcox

+0

這是因爲你的'$ demographic_names'數組中只有1個元素。 'implode()'只會將連接字符放在2個元素之間。使用@ JeromeWAGNER的答案。 – FtDRbwLXw6

0

似乎你有一個空白demographic_name。在生成的陣列上使用array_filter

0

檢查第一個數組是否爲空。

while($catdata = $dbc->fetch($dbResult)) { 
    $demographics = array(); 
    $demographic_names = array('',trim($catdata->name)); 
    if(!empty($demographic_names)) 
    { 
     $demographics = implode(' '.chr(149).' ',$demographic_names); 
     print $demographics; 
    } 
} 
+0

這是一個好主意 - 我會嘗試 – deewilcox