如何按键而不是偏移量对数组进行切片?

2022-08-30 20:01:12

PHP 函数 array_slice() 按偏移量返回元素序列,如下所示:

// sample data
$a = array('a','b','c',100=>'aa',101=>'bb',102=>'cc'); 

// outputs empty array because offset 100 not defined
print_r(array_slice($a,100));

当前函数参数:

array_slice ( $array, $offset, $length, $preserve_keys) 

我需要这样的东西:

array_slice ( $array, **$key**, $length, $preserve_keys) 

根据上述print_r输出:

array (
   100 => aa,
   101 => bb,
   102 => cc
)

答案 1

要查找键的偏移量,请使用 array_search() 搜索键,可以使用 array_keys() 检索键。 当数组 () 中不存在指定的键 () 时,将返回。array_search()FALSE100$a

$key = array_search(100, array_keys($a), true);
if ($key !== false) {
    $slice = array_slice($a, $key, null, true);
    var_export($slice);
}

指纹:

array (
  100 => 'aa',
  101 => 'bb',
  102 => 'cc',
)

答案 2

返回数组中存在其键的部分:$array$keys

array_intersect_key($array,array_flip($keys));