Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数组结束之前执行某些操作_Php_Arrays - Fatal编程技术网

Php 在数组结束之前执行某些操作

Php 在数组结束之前执行某些操作,php,arrays,Php,Arrays,我有一个数组,看起来像这样: $array = array('element1', 'element2', 'element3'); foreach($array as $a){ echo $a; } 我需要做的是在数组的最后一个元素之前做一些事情,以便我的回音如下所示: 元素1,元素2,看,妈!我做了点什么!,要素3 我想要的是,当且仅当我们正好位于数组中最后一个元素之前时(无论大小),运行函数 我曾想过使用end($array);但如果是这样,我会怎么做 foreach($arr

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

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

foreach($array as $a){
    echo $a;
}
我需要做的是在数组的最后一个元素之前做一些事情,以便我的回音如下所示:

元素1,元素2,看,妈!我做了点什么!,要素3

我想要的是,当且仅当我们正好位于数组中最后一个元素之前时(无论大小),运行函数

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

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

    echo $a;
}

想法?

您可以对照数组的
end()
进行检查

$lastElement = $currentElement === end($array)
在你的例子中,那就是

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

    echo $a;
}

这当然取决于元素的独特性。否则,您可以使用计数器,或者使用该键并将其与最后一个键(
end(array\u keys($array))
)进行比较。

您可以对照数组的
end()
进行检查

$lastElement = $currentElement === end($array)
在你的例子中,那就是

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

    echo $a;
}
这当然取决于元素的独特性。否则,您可以使用计数器,或者使用该键并将其与最后一个键(
end(array\u keys($array))
)进行比较-

$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";
}
你可以这样做-

$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";
}
尝试:

或者你也可以这样做

$array = array('element1', 'element2', 'element3');
end($array);
$last_key = key($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;
}

通常情况下,我会这样做:

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

通常情况下,我会这样做:

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

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

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

最佳解决方案,但您可以避免使用
end($array)构建键的中间数组$最后一个密钥=密钥($array)最佳解决方案,但可以避免使用
end($array)构建中间密钥数组$最后一个密钥=密钥($array)