【问题标题】:Do something before the end of the array在数组结束之前做一些事情
【发布时间】:2012-12-31 03:55:43
【问题描述】:

我有一个看起来像这样的数组:

$array = array('element1', 'element2', 'element3');

foreach($array as $a){
    echo $a;
}

我需要做的是在数组的最后一个元素之前做一些事情,所以我的回声看起来像这样:

element1,element2,看妈!我做了点什么!,element3。

我想要的是当且仅当我们刚好在数组中的最后一个元素之前运行一个函数,而不管大小。

我曾想过使用 end($array);但如果是这样,我会这样做吗?

foreach($array as $a){
    if(!end($array)){
        call_func(); // this seems wrong.
    }

    echo $a;
}

想法?

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    尝试:

    $last_key = end(array_keys($array));
    foreach($array as $key => $a){
        if ($key == $last_key) {
            call_func(); 
        }
    
        echo $a;
    }
    

    或者你也可以这样做,

    $array = array('element1', 'element2', 'element3');
    end($array);
    $last_key = key($array);
    foreach($array as $key => $a){
        if ($key == $last_key) {
            call_func(); 
        }
    
        echo $a;
    }
    

    【讨论】:

    • 最佳解决方案,但您可以避免使用 end($array);$last_key = key($array); 构建中间键数组
    【解决方案2】:

    您可以检查阵列的end()

    $lastElement = $currentElement === end($array)
    

    在你的例子中,那就是......

    foreach($array as $a){
        if($a === end($array)){
            // Last iteration.
        }
    
        echo $a;
    }
    

    这当然依赖于元素的独特性。否则,您可以使用计数器,或使用密钥并将其与最后一个密钥 (end(array_keys($array))) 进行比较。

    【讨论】:

      【解决方案3】:

      你可以这样做-

      $array = array('element1', 'element2', 'element3');
      $count = count($array)-1;
      $loop = 1;
      foreach($array as $a){
          echo $a;
          $loop++;
          if($count == $loop)
            echo "You text to be print";
      }
      

      【讨论】:

        【解决方案4】:

        通常我会这样做:

        $arrlen = count($array);
        foreach($array as $i => $a) {
          if ($arrlen == $i + 1) {
            call_func();
          }
          echo $a;
        }
        

        【讨论】:

          【解决方案5】:

          您的 if 语句应该是 if($a == end($array)),但即使这样也不一定意味着它是数组的最后一个值(可能有重复)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-10
            相关资源
            最近更新 更多