Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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(1001, 1002, array('exam'=>true, 'index'=>10), 1003, 1004, 1005, array('exam'=>true, 'index'=>20), 1006, 1007, array('exam'=>true, '

我试图创建一个函数来检查数组元素是否是一个数组中的最后一个数组元素。原始数组看起来像:

array(1001,
      1002,
      array('exam'=>true, 'index'=>10),
      1003,
      1004,
      1005,
      array('exam'=>true, 'index'=>20),
      1006,
      1007,
      array('exam'=>true, 'index'=>30),
      1008,
      1009
)
我用这个例子来证明“array('exam'=>true,'index'=>30)”是否是最后一个

我有那个元素的索引位置,但我不知道如何检查它是否是最后一个数组元素

    function is_last_exam_in_survey($array, $exam_position) {

      foreach($array as $element) {
        if(!is_numeric($element) {
          // check if that is the last array element in array

          //return true;
        } else {
          // return false;
        }
      }

    }

如有任何建议,我将不胜感激:)

我认为这将是最快的解决方案:

function is_last_exam_in_survey($array, $exam_position) {
    $last_index = array_key_last( $array );

    if( $exam_position == $last_index ){
        return true;
    }else{
        return false;
    }

}
如果尝试比较最后一个元素的值,仍然可以更改条件语句,例如:

if( isset($last_index['index']) && $exam_position == $last_index['index'] ){
此外,如果要获取最新的数组值而不是键,可以使用以下命令:

$last_index = end( $array );

我认为这是最快的解决方案:

function is_last_exam_in_survey($array, $exam_position) {
    $last_index = array_key_last( $array );

    if( $exam_position == $last_index ){
        return true;
    }else{
        return false;
    }

}
如果尝试比较最后一个元素的值,仍然可以更改条件语句,例如:

if( isset($last_index['index']) && $exam_position == $last_index['index'] ){
此外,如果要获取最新的数组值而不是键,可以使用以下命令:

$last_index = end( $array );

我将反转数组,并查找第一个元素。比如:

function is_last_exam_in_survey($array, $exam_position) {   
  foreach(array_reverse($array) as $element) {
    if(!is_numeric($element) {
      return $element['index'] === $exam_position;
    }
  }
  return false;  
}

对我来说,这似乎是最有效和最简单的解决方案。

我将反转数组,并查找第一个元素。比如:

function is_last_exam_in_survey($array, $exam_position) {   
  foreach(array_reverse($array) as $element) {
    if(!is_numeric($element) {
      return $element['index'] === $exam_position;
    }
  }
  return false;  
}

对我来说,这似乎是最有效和最简单的解决方案。

此解决方案可避免循环。首先找出数组的最后一个索引,然后使用is\u array()函数检查最后一个元素是否为数组

function get_last_exam_in_survey(array $arr)
{
  $lastOfset = count($arr) - 1;
  if(is_array($arr[$lastOfset])){
    return true;
  }else{
    return false;
  }
}

此解决方案避免了循环。首先找出数组的最后一个索引,然后使用is\u array()函数检查最后一个元素是否为数组

function get_last_exam_in_survey(array $arr)
{
  $lastOfset = count($arr) - 1;
  if(is_array($arr[$lastOfset])){
    return true;
  }else{
    return false;
  }
}

我想您可以使用
array\u column
函数来实现这一点

function is_last_exam_in_survey($array,$exam_position){

    $ac = array_column($array, 'index'); // return array(10,20,30) 
    $la = $ac[count($ac) - 1]; // 30 

    foreach ($array as $element) {
        if (!is_numeric($element)) {
            // check if $element['index'] === 30
            if($element['index'] === $la){
                return true;
            }
        }
    }
}

我想您可以使用
array\u column
函数来实现这一点

function is_last_exam_in_survey($array,$exam_position){

    $ac = array_column($array, 'index'); // return array(10,20,30) 
    $la = $ac[count($ac) - 1]; // 30 

    foreach ($array as $element) {
        if (!is_numeric($element)) {
            // check if $element['index'] === 30
            if($element['index'] === $la){
                return true;
            }
        }
    }
}
如何使用提取数组中位于所查看位置之后的值,然后删除任何非数组的值。如果还有任何值,则您正在查看的条目不是数组中的最后一个数组条目

function is_last_exam_in_survey($array, $exam_position)
{
    return isset($array[$exam_position])
        && is_array($array[$exam_position])
        && !array_filter(array_slice($array, $exam_position + 1), 'is_array');
}
如果使用大型数组多次调用它,这可能不是很有效。最好重新考虑将数据存储或加载到阵列中的方式

function is_last_exam_in_survey($array, $exam_position)
{
    return isset($array[$exam_position])
        && is_array($array[$exam_position])
        && !array_filter(array_slice($array, $exam_position + 1), 'is_array');
}
如何使用提取数组中位于所查看位置之后的值,然后删除任何非数组的值。如果还有任何值,则您正在查看的条目不是数组中的最后一个数组条目

function is_last_exam_in_survey($array, $exam_position)
{
    return isset($array[$exam_position])
        && is_array($array[$exam_position])
        && !array_filter(array_slice($array, $exam_position + 1), 'is_array');
}
如果使用大型数组多次调用它,这可能不是很有效。最好重新考虑将数据存储或加载到阵列中的方式

function is_last_exam_in_survey($array, $exam_position)
{
    return isset($array[$exam_position])
        && is_array($array[$exam_position])
        && !array_filter(array_slice($array, $exam_position + 1), 'is_array');
}

这回答了你的问题吗?这回答了你的问题吗?top函数返回元素,而不是它的位置。@BenHillier,是的,它只是一个帮助函数,帮助了我,谢谢。我已经修改了第一个函数和返回位置。@lukpar谢谢,如果它解决了问题,您可以接受这样的回答:top函数返回元素,而不是它的位置。@BenHillier,是的,这只是一个帮助函数,谢谢。我已经修改了第一个函数和返回位置。@lukpar谢谢,如果它解决了问题,你可以接受答案。我想他想找到的是最后一次检查,不管它可能在哪里,而不是检查最后一个元素是否是exami,我想他想找到的是最后一次检查,不管它可能在哪里,不检查最后一个元素是否为examit并不比正向检查更有效,因为
array\u reverse
仍然具有O(N)时间复杂度它并不比正向检查更有效,因为
array\u reverse
仍然具有O(N)时间复杂度