这是我的阵列:
Array
(
[0] => Array
(
[id] => 5
)
[1] => Array
(
[id] => 9
)
[2] => Array
(
[id] => 2
)
这是我的PHP代码:
<?php
foreach($results as $row) {
if($row['id'] > 10) {
echo $row['id'];
}
}
?>
因为没有大于10的id,我希望它:
echo 'Nothing found';
我该怎么做?感谢。
答案 0 :(得分:7)
只需设置一个布尔标志:
$foundone=false;
foreach($results as $row) {
if($row['id'] > 10) {
$foundone = true;
echo $row['id'];
}
}
if(!$foundone) {
echo "Nothing found";
}
替代方法:对数组进行排序(通过usort f.e.)并检查最高值:
usort($array, function ($a, $b) { return $a['id']>$b['id']; });
if ($array[count($array)-1]['id'])>10) {
echo "found an id higher than 10!";
} else {
echo "nothing found";
}
但我怀疑这会更快和/或更容易阅读和维护。
答案 1 :(得分:2)
如果你想说只发现一次没有,你可以这样做:
$output = '';
foreach($results as $row) {
if($row['id'] > 10) $output .= $row['id'];
}
echo ($output == '') ? 'Nothing found' : $output;
答案 2 :(得分:1)
另一种方法是使用array_filter。很抱歉迟到的回复
def update_order
@order = current_order
if @order.update_order_from_shipping_page(params[:order][:shipping][:shipping_choice])
redirect_to new_charge_path and return
else
redirect_to :back
flash[:notice] = "Something is amuck."
end
end
答案 3 :(得分:1)
我建议跟踪最大ID。
$maxId = 0;
foreach($results as $row){
// safely store the id
$id = isset($row['id']) && is_numeric($row['id']) ? $row['id'] : 0;
// check if $id is bigger than $maxId and set
$maxId = $id > $maxId ? $id : $maxId;
// print the id
echo $id;
}
if($maxId > 10){
...
}