【问题标题】:How to remove from array any string with 1 character?如何从数组中删除任何具有 1 个字符的字符串?
【发布时间】:2019-02-08 09:09:39
【问题描述】:

所以如果你有一个数组:

$ourArray[0] = "a";
$ourArray[1] = "bb";
$ourArray[2] = "c";
$ourArray[3] = "ddd";

有没有比通过 foreach 语句运行数组并单独检查每个字符值更短的方法来从数组中删除所有单个字符值?

或者这是完成这项任务的最快/最好的方法吗?:

foreach( $ourArray as $key => $value){
    if(strlen($value) == 1){ unset($ourArray[$key]); }
}

【问题讨论】:

  • 您目前的方法有什么问题?慢吗?是否消耗太多内存?您是否正在寻找一个不迭代整个数组的数组函数?

标签: php arrays filtering


【解决方案1】:

你可以使用array_filter来实现这个,

$arr = [
  'test',
  '1',
  'g',
  'test-two'
];

var_dump(array_filter($arr, function ($v) {
  return strlen($v) > 1;
}));

如果您想确保考虑到空格,请在使用 strlen 之前的值上使用 trim

注意:密钥结构将被破坏,因此您可以使用array_values 重新组织它们。

现场示例

Repl - array_filter 没有array_values

Repl - array_filter 在返回的array_filter 数组上使用array_values

【讨论】:

    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2018-09-06
    • 2013-03-02
    • 2015-08-04
    • 1970-01-01
    • 2013-10-17
    相关资源
    最近更新 更多