2012-08-09 132 views
0

比方说,我有一个数组包含:apples, watermelons, grapes。我正在试图做的是创建另一个阵列PHP在数组中创建组合

apples, apples;watermelons, apples;watermelons;grapes

我试着用破灭,但它不是正是我想要的。这项任务是否有内置功能?谢谢!

编辑:澄清,创建的字符串基本上是这三个元素的组合。因此,创建阵列也可以是这样的:

apples, apples-watermelons, apples-watermelons-grapes

+0

它是一个包含字符串的数组simil对此。它可以是苹果,苹果,西瓜,苹果,西瓜,葡萄 – 2012-08-09 03:00:34

+0

你可以澄清你正在尝试做什么?你是否试图从该数组中挑选出随机值的字符串?也许你可以提供一个具体的例子。 – 2012-08-09 03:06:42

+0

这是一个具体的例子,一切都按顺序挑选:| – 2012-08-09 03:13:25

回答

2

一种优雅的方式来做到这一点是与array_reduce

<?php 
$my_array = array('apples','watermelons','grapes'); 

function collapse($result, $item) { 
    $result[] = end($result) !== FALSE ? end($result) . ';' . $item : $item; 
    return $result; 
} 

$collapsed = array_reduce($my_array, "collapse", array()); 
var_dump($collapsed); 
?> 

测试:

[email protected]:~/Dropbox/Public/StackOverflow$ php 11876147.php 
array(3) { 
    [0]=> 
    string(6) "apples" 
    [1]=> 
    string(18) "apples;watermelons" 
    [2]=> 
    string(25) "apples;watermelons;grapes" 
} 
2
<?php 
$my_array = array('apples','watermelons','grapes'); 
$string = ''; 
$result = array(); 
for ($i=0; $i<count($my_array); $i++) { 
    $string .= $my_array[$i]; 
    $result[] = $string; 
    $string .= '-'; 
} 
print_r($result); 

有可能是一种方式与array_walk()array_map()或其他array_*()功能之一,也是这样做。

1
<?php 

$array = array("apples", "watermelons", "grapes"); 
$newarray = $array; 
for ($i = 1; $i < count($array); $i++) 
{ 
    $newarray[$i] = $newarray[$i - 1] . ";" . $newarray[$i] ; 
} 

print_r($newarray); 
?> 

输出:

Array 
(
    [0] => apples 
    [1] => apples;watermelons 
    [2] => apples;watermelons;grapes 
)