`array()`函数中的php IF语句

`array()`函数中的php IF语句,php,arrays,if-statement,ranking,Php,Arrays,If Statement,Ranking,我试图根据非空的查询结果设置数组。反过来,我希望以某种方式创建一个基于非空结果的排名 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 = $rankre

我试图根据非空的查询结果设置数组。反过来,我希望以某种方式创建一个基于非空结果的排名

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)
你试过了吗

结果:

array(
    "comp3"=>226.97,
    "comp4"=>274,
    "comp6"=>208,
    "comp7"=>189,
    "comp9"=>198.99
)
你试过了吗

结果:

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

你想过使用循环吗

如果您有结果查询的大小,可以执行以下操作:

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

更新。

您想过使用循环吗

如果您有结果查询的大小,可以执行以下操作:

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

更新。

您的数据库设计可能有缺陷。但是,为什么不直接使用原始数组并删除任何空数组呢?我不明白。我应该发布我的MySQL查询吗?@toddnCol1,col2,col3,其中col是相同的名称,通常是一个反模式。这意味着数据没有正确地规范化。您的数据库设计可能有缺陷。但是,为什么不直接使用原始数组并删除任何空数组呢?我不明白。我应该发布我的MySQL查询吗?@toddnCol1,col2,col3,其中col是相同的名称,通常是一个反模式。这表示数据未正确规范化。这似乎对我来说是可行的,因为我忘记了array_filter函数。@ToddN:+1。虽然它会起作用,但请注意,这里有一个更基本的问题。欢迎您访问PHP聊天频道,我们将向您解释:这似乎对我有用,我已经忘记了array\u filter函数。@ToddN:+1。虽然它会起作用,但请注意,这里有一个更基本的问题。欢迎您访问PHP聊天频道,我们将向您解释:或者您可以使用foreach over$rankresult。另外,$COMP$ix是一个语法错误。或者您可以在$rankresult上使用foreach。另外,$COMP$ix是一个语法错误。