如何按键切割数组,而不是偏移?

Mar*_*tin 15 php arrays offset slice array-filter

PHP函数array_slice()通过offset返回元素序列,如下所示:

// 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));
Run Code Online (Sandbox Code Playgroud)

当前函数参数:

array_slice ( $array, $offset, $length, $preserve_keys) 
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

array_slice ( $array, **$key**, $length, $preserve_keys) 
Run Code Online (Sandbox Code Playgroud)

根据上面的print_r输出:

array (
   100 => aa,
   101 => bb,
   102 => cc
)
Run Code Online (Sandbox Code Playgroud)

sal*_*the 15

要查找密钥的偏移量,请使用array_search()搜索可以检索的密钥array_keys(). 当指定的key()不在数组()中时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);
}
Run Code Online (Sandbox Code Playgroud)

打印:

array (
  100 => 'aa',
  101 => 'bb',
  102 => 'cc',
)
Run Code Online (Sandbox Code Playgroud)


Cra*_*key 9

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

array_intersect_key($array,array_flip($keys));
Run Code Online (Sandbox Code Playgroud)

  • 不确定你的答案是否回答了OP的问题,但这正是我一直在谷歌搜索的:) (3认同)