2012-05-09 24 views
1

Nullでないクエリ結果に基づいて配列を設定しようとしています。次にNON Nullの結果に基づいてランキングを作成したいと考えています。PHPの `array()`関数内のIFステートメント

SQLクエリが返す

Comp1 Comp2 Comp3 Comp4 Comp5 Comp6 Comp7 Comp8 Comp9 
NULL  NULL 226.97 274 NULL 208  189  NULL 198.99 

私のPHPを:

$COMP1 = $rankresult['Comp1']; 
$COMP2 = $rankresult['Comp2']; 
$COMP3 = $rankresult['Comp3']; 
$COMP4 = $rankresult['Comp4']; 
$COMP5 = $rankresult['Comp5']; 
$COMP6 = $rankresult['Comp6']; 
$COMP7 = $rankresult['Comp7']; 
$COMP8 = $rankresult['Comp8']; 
$COMP9 = $rankresult['Comp9']; 

私は唯一のヌルされていない変数に入れしようとしていますので、これは動作しません:

$myarray = 'array(
     if(!empty($COMP1)){ 
     $COMP1,} 
     if(!empty($COMP2)){ 
     $COMP2,} 
     if(!empty($COMP3)){ 
     $COMP3,} 
     if(!empty($COMP4)){ 
     $COMP4,} 
     if(!empty($COMP5)){ 
     $COMP5,} 
     if(!empty($COMP6)){ 
     $COMP6,} 
     if(!empty($COMP7)){ 
     $COMP7,} 
     if(!empty($COMP8)){ 
     $COMP8,} 
     if(!empty($COMP9)){ 
     $COMP9})'; 

希望出力:

$myarray = array(226.97,274,208,189,198.99) 
+0

データベース設計に問題がある可能性があります。しかし、元の配列を使用してヌルのものを削除してみませんか? –

+0

私は分かりません。私はMySQLクエリを投稿しますか? – ToddN

+0

@ToddN col1、col2、col3ここで、 'col'は同じ名前ですが、通常は反パターンです。データが適切に正規化されていないことを示します。 – Corbin

答えて

4

array_filter()を試しましたか?

$result = array_filter($rankresult); 

結果:

array(
    "comp3"=>226.97, 
    "comp4"=>274, 
    "comp6"=>208, 
    "comp7"=>189, 
    "comp9"=>198.99 
) 
+0

これは私にとってはうまくいくかのように見えますが、私は 'array_filter'関数について忘れていました。 – ToddN

+0

@ToddN:+1。それがうまくいく間、ここに根本的な根本的な問題があることに注意してください。あなたはPHPチャットチャンネル[ここ](http://chat.stackoverflow.com/rooms/11/php)に歓迎しています。 –

0

は、ループを使用する方法についてかかわらず、あなたをお持ちですか?あなたは結果クエリの大きさを持っている場合は

、あなたはこのような何かを行うことができます。

$myarray=new array(); 
for ($ix=1; $ix<$num_rows; $ix++) { 
    if (${COMP.$ix}!=NULL) 
     array_push($myarray,${COMP.$ix}); 
} 

を更新します。

+0

または '$ rankresultを使って' foreach'を使うことができます'。また、 '$ COMP $ ix'は構文エラーです。 –

関連する問題