如何仅使用数字键提取数组值?

Cod*_*ium 2 php arrays extract

考虑像这样的数组:

$arr = array(
  'key' => 'foo'
  'key2' => 'bar',
   0 => 'num_foo',
   1 => 'num_bar'

);
Run Code Online (Sandbox Code Playgroud)

如何提取0和1以下的值?(除了使用 for 循环)。也许有任何标准函数可以完成这项工作?

CBr*_*roe 5

如果您\xe2\x80\x99 使用的 PHP 版本 >= 5.6,则可以使用array_filter, 以及指示它将密钥传递给回调函数的标志。

\n\n
$arr = array(\n  \'key\' => \'foo\',\n  \'key2\' => \'bar\',\n   0 => \'num_foo\',\n   1 => \'num_bar\'\n);\n\n$new_array = array_filter($arr, function($key) {\n  return is_numeric($key);\n}, ARRAY_FILTER_USE_KEY);\n\nvar_dump($new_array);\n
Run Code Online (Sandbox Code Playgroud)\n\n

https://3v4l.org/qfar9

\n\n
\n\n

编辑:正如罗比指出的,使用is_numeric这里是更好的选择。(之前我的例子使用is_int。)

\n\n
\n\n

编辑2:也许is_int这里实际上是更好的选择。is_numeric对于诸如以下的值将返回 true+0123.45e6、 或十六进制/二进制数字表示法以及 \xe2\x80\x93 之类的值,将返回 true ,不确定 \xe2\x80\x99 是否需要。

\n\n

is_int对于诸如以下的值通常会返回 false\'1\'。它在这里起作用,因为我们正在处理数组 \xe2\x80\x93 并且 PHP 会自动将数组键转换为整数(如果它们是 \xe2\x80\x9cinteger 字符串)。\xe2\x80\x9d

\n