希望你能解决的问题是将数组中的两个值与行(列)进行比较。
有没有办法只检查那些列匹配,因为我只检查两行,或者是每个循环唯一的方法。
我能够获取所有数据并将其放入数组中,但我使用的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";
//}
}
这是数组中的数据,stats列是我想要比较的,就像两个值都等于“hello world”。
[{"abcID":"8","stats":"Hello, world","time":"23:30:00"},
{"abcID":"7","stats":"Hi, world","time":"23:16:00"},]
答案 0 :(得分:0)
试试这个
<?
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.
}
}
}
?>
答案 1 :(得分:0)
如果只返回两行,则逻辑进程(不需要函数或循环)是进行文字检查:
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";
}
我不确定它是否值得继续下去。