0

我正在开发一个需要使用字符分隔来内爆数组的项目。我已经在项目的其他部分成功使用joinimplode互换,但我无法让它在本节中工作。

$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; 
    }

结果是这样的:

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

代替

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

我尝试在 '.chr(149).' 周围使用双引号而不是单引号。我尝试过使用逗号或横杠或仅使用空格。我尝试了不同的修剪方式和不修剪方式$catdata->name

我还考虑过尝试字符串连接,但最后我会在末尾而不是开头添加一个额外的字符。Implode或者join似乎是更好的方法。

我错过了什么?

4

5 回答 5

1

我不确定我是否理解您要执行的操作,但为什么不使用

$demographics_names = array();
while($catdata = $dbc->fetch($dbResult)) {
    array_push($demographics_names, trim($catdata->name));
}
$demographics = implode('  '.chr(149).'   ',$demographic_names);   
print $demographics; 
于 2012-01-24T21:03:20.917 回答
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

希望这对其他人有帮助!

于 2012-01-26T18:44:31.270 回答
0

您正在将一个空白元素插入到您正在崩溃的数组中:

$demographic_names = array('',trim($catdata->name));
                           ^--- here
于 2012-01-24T21:04:24.183 回答
0

好像你有一个空白demographic_namearray_filter在结果数组上使用。

于 2012-01-24T21:04:56.630 回答
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; 
    }
}
于 2012-01-24T21:05:02.770 回答