【问题标题】:MySQL/PHP - Comparing columns of rows in arrayMySQL/PHP - 比较数组中的行列
【发布时间】:2017-03-24 17:16:25
【问题描述】:

希望您能很好地解决我遇到的问题,即比较行(列)数组中的两个值。

有没有办法检查这些列是否匹配,因为我只检查两行,或者是每个循环的唯一方法。

我能够获取所有数据并将其放入数组中,但我使用的 if 语句在比较中不起作用。

  if ($countReport == 2) {
        while ($rowReport = mysqli_fetch_assoc($resultReport)) {    
        $temp_array[] = $rowReport;
        }
        //if (in_array("Hello, world",array_count_values($temp_array))){
        //echo "working";
        //} 
    }

这是数组中的数据,统计数据列是我要比较的,就像两个值都等于“hello world”。

[{"abcID":"8","stats":"Hello, world","time":"23:30:00"},
{"abcID":"7","stats":"Hi, world","time":"23:16:00"},]

【问题讨论】:

  • 用你的黑魔法攻击消除那个狂野的右括号。
  • $countReport = 2 应该是$countReport == 2
  • 攻击失败,我现在才注释掉。使用该 if 语句只给出整数和字符串值的错误。可能会尝试使用每个代替。

标签: php mysql arrays


【解决方案1】:

这样试试

<?
foreach($array as $k1=>$v1)
{
    echo $k1; //returned abcID
    echo $v2 //returned 8
  foreach ($array2 as $k2 => $v2) {
    echo $k2; //returned abcID
    echo $v2 //returned 7
        if($k1==$k2 && $k1=='stats')
        {

                if($v1==$v2)
                $newarray[]=$v1; //added if they are equal or do what u want.

        }
  }
}

?>

【讨论】:

    【解决方案2】:

    编辑:(这是我的愚蠢时刻,我从一开始就过度考虑了这个问题。)

    如果只返回两行,则逻辑过程(不需要函数或循环)是进行文字检查:

    if($temp_array[0]['stats']!=$temp_array[1]['stats']){
        echo "no match";
    }else{
        echo "duplicate";
    }
    

    以下单行代码提供相同的结果,但效率较低....

    这是一个不需要循环的条件语句的单行代码:

    示例 1:

    $temp_array=array(
        array("abcID"=>"8","stats"=>"Hello, world","time"=>"23:30:00"),
        array("abcID"=>"7","stats"=>"Hi, world","time"=>"23:16:00")
    );
    
    if(sizeof(array_unique(array_column($temp_array,"stats")))>1){
        echo "no match";
    }else{
        echo "duplicate";
    }
    // displays: no match
    

    示例 2:

    $temp_array=array(
        array("abcID"=>"8","stats"=>"Hello, world","time"=>"23:30:00"),
        array("abcID"=>"7","stats"=>"Hello, world","time"=>"23:16:00")
    );
    if(sizeof(array_unique(array_column($temp_array,"stats")))>1){
        echo "no match";
    }else{
        echo "duplicate";
    }
    // displays: duplicate
    

    细分:

    sizeof(                                    // count the size of the remaining array
        array_unique(                          // remove duplicates from array
            array_column($temp_array,"stats")  // array of values where 'stats' was the key
        )
    )
    

    想一想,可能有几种方法可以剥这只猫的皮。

    这是另一个:

    if(current(array_count_values(array_column($temp_array,"stats")))==1){
        echo "no match";
    }else{
        echo "duplicate";
    }
    

    我不确定是否值得继续下去。

    【讨论】:

    • @Dark-Magician 你会发现我的顶级 sn-p 无与伦比。请将其标记为已接受的答案,以便您的问题被视为已解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多