0

文字分離を使用して配列を内破する必要があるプロジェクトに取り組んでいます。joinプロジェクトの他の部分でand を交互に使用することに成功しました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; 
    }

結果は次のとおりです。

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

それ以外の

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

「.chr(149)」を一重引用符ではなく二重引用符で囲んでみました。コンマ、バー、またはスペースのみを使用してみました。トリミングとトリミング以外のさまざまな方法を試しました$catdata->name

文字列の連結も考えましたが、先頭ではなく末尾に余分な文字が追加されてしまいます。Implodeまたはjoin行く方が良いようです。

私は何が欠けていますか?

4

5 に答える 5

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 に答える
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 に答える
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 に答える