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

时间:2014-09-16 22:54:53

标签: php arrays string-length

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

示例:

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

我需要:

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

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

除了事实"你好"和#34;世界"是5," stackoverflow"是13,你可以预告,并使用strlen($str)

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

我建议使用多维数组:

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

答案 1 :(得分:1)

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

以下是使用variable variables

的方法
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);

Output:

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

尽管这会产生您所需的结果,但您应该考虑创建任意变量名称并不是一个好主意。在数组中包含它们是一种结构化的解决方案,它为您提供访问它们的界限,而无需知道它们代表什么。在这种情况下,您需要知道使用$length4$length12。值得深思。