如何在PHP中按元素的长度分割数组


How to split an array by the length of the elements in PHP

我有一个数组,其中包含不同长度的字符串元素。我需要将这个数组拆分为几个数组,每个数组只包含一个特定长度的字符串。

示例:

$allstrings = ('hello', 'world', 'stackoverflow');

我需要:

$length4 = ('hello', 'world');
$length12 = ('stackoverflow');

非常感谢你的帮助!

除了"hello"answers"world"是5,"stackoverflow"是13之外,您可以foreach,并使用strlen($str)

$allstrings = array('hello', 'world', 'stackoverflow');

我建议使用多维数组:

$array = array();
foreach($allstrings as $str) {
  $array[strlen($str)][] = $str;
}

在这个特定的示例中,您希望创建包含匹配特定长度的字符串的数组,并使用以下命名约定将这些数组分配给变量:$lengthN,其中N是字符串长度减去1。

以下是使用可变变量的方法:

foreach($allstrings as $string) {
    // Remove one as per your spec
    $len = strlen($string) - 1;
    // Set temp var name
    $var_name = 'length' . $len;
    // Initialize variable variable
    if(!isset(${$var_name}))
        ${$var_name} = array();
    // Add variable variable's new array entry 
    ${$var_name}[] = $string;
}
print_r($length4);
print_r($length12);

输出:

Array
(
    [0] => hello
    [1] => world
)
Array
(
    [0] => stackoverflow
)

尽管这样会产生所需的结果,但您应该考虑这样一个事实,即创建任意变量名不是一个好主意。将它们包含在数组中是一种结构化的解决方案,它允许您在不知道它们用什么表示的情况下访问它们。在这种情况下,您需要知道使用$length4$length12。值得思考。