2015-02-11 42 views
-3

排序阵列我有一个字符串PHP - 通过模式

[ "one", "Two", "FOUR", "Four", "three", "two"] 

我需要创建一个字符串,它看起来像这样的数组:

“一,三,二

一,二,三,四,二

一,二,四,三,四,二“。

我将不胜感激任何帮助。谢谢。

+1

所以你其实可以解释这些模式背后的逻辑是什么? – 2015-02-11 10:52:44

+0

而模式是?在你的脑海? – 2015-02-11 10:53:01

+0

我诚实地看不到你想要的输出中的逻辑。通常必须有某种逻辑才能形成一个通用的功能。否则,你需要一个非常特殊的函数来处理边界情况。 – AnotherGuy 2015-02-11 10:53:39

回答

0

需要短阵语法

$master = [ "one", "Two", "FOUR", "Four", "three", "two"]; 

// Filter $master into arrays containing the appropriate lower, ucfirst and upper values 
$lowerSet = array_filter(
    $master, 
    function($value) { 
     return strtolower($value) == $value; 
    } 
); 

$ucfirstSet = array_filter(
    $master, 
    function($value) { 
     return ucfirst(strtolower($value)) == $value; 
    } 
); 

$upperSet = array_filter(
    $master, 
    function($value) { 
     return strtoupper($value) == $value; 
    } 
); 

function sorting(array $series) { 
    $mi = new MultipleIterator(MultipleIterator::MIT_NEED_ANY); 
    foreach($series as $valueSet) { 
     $mi->attachIterator(new ArrayIterator($valueSet)); 
    } 
    $line = []; 
    foreach($mi as $values) { 
     $line = array_merge($line, $values); 
    } 
    return array_filter($line); 
} 

$lines = [ 
    implode(', ', $lowerSet), 
    implode(', ', sorting([$lowerSet, $ucfirstSet])), 
    implode(', ', sorting([$lowerSet, $ucfirstSet, $upperSet])) 
]; 
echo implode(PHP_EOL, $lines); 

PHP> = 5.4,但将与PHP> = 5.3如果[]工作被替换array()

+0

这就是我一直在寻找的。非常感谢Mark。 – 2015-02-11 12:22:29