在PHP中从数组中删除所有非字符串元素


Remove all non-string elements from array in PHP

我在PHP中有一个数组,它可能包含各种类型的元素。如何只保留字符串元素,并删除所有其他元素?

我知道我能做

foreach ($array as $key => $val)
  if (gettype($val) !== 'string')
    unset($array[$key]);

但我想要一种更简单的方法。
注意:我不关心数组的键以及它们是否保持不变。

您可以使用PHP的函数array_filter()is_string()在一行中完成。

$new = array_filter($array, "is_string");

array_filter()只保留数组的元素,如果将其传递给回调函数(本例中为is_string()),则回调返回true。