如何检查所有行是否都符合 PHP 中的条件
How to check if all rows match a criteria in PHP
我想检查所有行的某个字段是否符合条件。
因此,如果状态字段中的所有行都具有 'RUN' 作为值,则回显 "Success"。
如果有一行以 END 作为值,则 echo "Fail":
我猜我需要一个循环和一个 IF 语句?
我在想这样的事情,但它没有 return 任何东西:
while($source_row = mysqli_fetch_array($source_selection)){
if ( ($source_row['Stat']) == ("Run" ) {
echo "Success<br />";
} else
echo "Fail";
}
我不想回显每一行,我希望所有行都符合条件然后回显,如果不符合条件则也回显。
代码中有一些错误,您可以使用计数来匹配 -
$count = 0;
while($source_row = mysqli_fetch_array($source_selection)){
if ($source_row['Stat'] == "Run" ) {
$count++;
}
}
if($count != mysqli_num_rows($source_selection)) {
echo "Fail";
} else echo "Success";
试试这个
$success=true;
while($source_row = mysqli_fetch_array($source_selection)){
if ( ($source_row['Stat']) != ("Run" ) {
$success=false;
}
}
if ($success) {
echo "Success";
} else {
echo "Fail";
}
这应该适合你:
首先,您必须使用 mysqli_fetch_all()
获取所有行。在此之后,我只提取带有 array_column()
的 Stat 列。然后我只是简单地 array_fill()
一个具有 X 值的数组,就像您在 $states
中具有值 "Run" 一样。并检查每个值是否相等。
$result = mysqli_fetch_all($source_selection, MYSQLI_ASSOC);
$states = array_column($result, "Stat");
if($states == array_fill(0, count($states), "Run")) {
echo "Success";
} else {
echo "Fail";
}
为了获得最佳性能,您可以直接在 SQL:
select count(*) from table where Stat <> 'Run';
然后测试返回值以检查是否大于零。
要用 php 做到这一点,您应该知道,当您发现错误时,您可以停止迭代。代码看起来像这样:
while($source_row = mysqli_fetch_array($source_selection)){
if ( $source_row['Stat'] != "Run" ){
$fail = true;
break;
}
}
if ($fail) {
echo "Fail";
} else
echo "Success";
}
我想检查所有行的某个字段是否符合条件。
因此,如果状态字段中的所有行都具有 'RUN' 作为值,则回显 "Success"。 如果有一行以 END 作为值,则 echo "Fail":
我猜我需要一个循环和一个 IF 语句? 我在想这样的事情,但它没有 return 任何东西:
while($source_row = mysqli_fetch_array($source_selection)){
if ( ($source_row['Stat']) == ("Run" ) {
echo "Success<br />";
} else
echo "Fail";
}
我不想回显每一行,我希望所有行都符合条件然后回显,如果不符合条件则也回显。
代码中有一些错误,您可以使用计数来匹配 -
$count = 0;
while($source_row = mysqli_fetch_array($source_selection)){
if ($source_row['Stat'] == "Run" ) {
$count++;
}
}
if($count != mysqli_num_rows($source_selection)) {
echo "Fail";
} else echo "Success";
试试这个
$success=true;
while($source_row = mysqli_fetch_array($source_selection)){
if ( ($source_row['Stat']) != ("Run" ) {
$success=false;
}
}
if ($success) {
echo "Success";
} else {
echo "Fail";
}
这应该适合你:
首先,您必须使用 mysqli_fetch_all()
获取所有行。在此之后,我只提取带有 array_column()
的 Stat 列。然后我只是简单地 array_fill()
一个具有 X 值的数组,就像您在 $states
中具有值 "Run" 一样。并检查每个值是否相等。
$result = mysqli_fetch_all($source_selection, MYSQLI_ASSOC);
$states = array_column($result, "Stat");
if($states == array_fill(0, count($states), "Run")) {
echo "Success";
} else {
echo "Fail";
}
为了获得最佳性能,您可以直接在 SQL:
select count(*) from table where Stat <> 'Run';
然后测试返回值以检查是否大于零。
要用 php 做到这一点,您应该知道,当您发现错误时,您可以停止迭代。代码看起来像这样:
while($source_row = mysqli_fetch_array($source_selection)){
if ( $source_row['Stat'] != "Run" ){
$fail = true;
break;
}
}
if ($fail) {
echo "Fail";
} else
echo "Success";
}