我试图将四个字符串(用逗号分隔)的单词混合成一个字符串,如下所示:
$string1 = "apple, banana, grape";
$string2 = "red, yellow, black";
$string3 = "north, south, east";
$string4 = "april, may, june";
$output_string = "apple, red, north, april, banana, yellow, south, may, grape, black, east, june";
有什么想法吗?
试试这个(但这不是优化的好方法),如果元素的顺序很重要,请使用这个
$string1 = "apple, banana, grape";
$string2 = "red, yellow, black";
$string3 = "north, south, east";
$string4 = "april, may, june";
$piece1 = explode(",", $string1);
$piece2 = explode(",", $string2);
$piece3 = explode(",", $string3);
$piece4 = explode(",", $string4);
$i = 0;
foreach($piece1 as $element){
$resultArray[] = $element;
$resultArray[] = $piece2[$i];
$resultArray[] = $piece3[$i];
$resultArray[] = $piece4[$i];
$i++;
}
var_dump(implode(",", $resultArray));
结果:
string(75)"苹果,红色,北部,四月,香蕉,黄色,南部,五月,葡萄,黑色,东部,六月">
已编辑。更短的方式:
$i = 0;
foreach($piece1 as $element){
$resultArray.= $element.",".$piece2[$i].",".$piece3[$i].",".$piece4[$i];
$i++;
}
var_dump( $resultArray);
结果将是相同的
我认为您可以使用下面的代码。
$totalString = implode(', ', array($string1, $string2, $string3, $string4));
$splittedValues = explode ( ',', $totalString );
// trim all values
$result = array_map('trim', $splittedValues);
// randomize all values
$result = shuffle($result);
// merge it to a string
$output_string = implode(', ', $result);
祝你好运,
Stefan
$string1 = "apple, banana, grape";
$string2 = "red, yellow, black";
$string3 = "north, south, east";
$string4 = "april, may, june";
$myArray = array(
explode(',', $string1),
explode(',', $string2),
explode(',', $string3),
explode(',', $string4),
);
$transposedData = call_user_func_array(
'array_map',
array_merge(
array(NULL),
$myArray
)
);
array_walk(
$transposedData,
function(&$value) {
$value = implode(', ', $value);
}
);
echo implode(',', $transposedData);
您可以创建函数,该函数将接收多个字符串,并且返回随机化的字符串:
function mix_multiple_strings() {
$strings = array();
foreach (func_get_args() as $string) {
$strings = array_merge($strings, explode(', ', $string));
}
shuffle($strings);
return implode(', ', $strings);
}
echo mix_multiple_strings($string1, $string2, $string3, $string4);
演示
或者将按顺序排列字符串的函数:
function arrange_multiple_strings() {
$strings = array();
$n = func_num_args();
foreach (func_get_args() as $i => $string) {
foreach (explode(', ', $string) as $j => $val) {
$strings[$n * $j + $i] = $val;
}
}
ksort($strings);
return implode(', ', $strings);
}
echo arrange_multiple_strings($string1, $string2, $string3, $string4);
演示