PHP如果if语句中没有显示任何内容

时间:2017-05-24 23:29:25

标签: php arrays if-statement foreach

这是我的阵列:

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';

我该怎么做?感谢。

4 个答案:

答案 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){
    ...
}