2015-05-04 56 views
0

假设我有一个逗号分隔字符串,像如下:从逗号分隔字符串使成对排列

1,Sunday,2,Monday,3,Tuesday,4,Wednesday,5,Thursday,6,Friday,7,Saturday 

我怎样才能使一个成对排列在PHP像如下 -

array 
(
    [1] => Sunday, 
    [2] => Monday, 
    [3] => Tuesday, 
    [4] => Wednesday, 
    [5] => Thursday, 
    [6] => Friday, 
    [7] => Saturday, 
); 
+0

您尝试过什么吗? – Rizier123

+2

你真的需要数组中的逗号吗? –

+0

不,我不是在尝试任何东西。但现在我会尽力提供这些建议。 – Coder

回答

1

如果你有像工作日和星期几这样的静态数据,它肯定会是使用静态数组最简单的:

$weekdays = array(
    1 => 'Sunday', 
    2 => 'Monday', 
    3 => 'Tuesday', 
    4 => 'Wednesday', 
    5 => 'Thursday', 
    6 => 'Friday', 
    7 => 'Saturday', 
); 

如果您解析您的逗号分隔字符串,你可以这样做:

$string = '1,Sunday,2,Monday,3,Tuesday,4,Wednesday,5,Thursday,6,Friday,7,Saturday'; 
$parts = explode(',', $string); 
$weekdays = array(); 

for ($i = 0; $i < count($parts);) { 
    $weekdays[$parts[$i]] = $parts[++$i]; 
    ++$i; 
} 

print_r($weekdays); 

输出:

Array 
(
    [1] => Sunday 
    [2] => Monday 
    [3] => Tuesday 
    [4] => Wednesday 
    [5] => Thursday 
    [6] => Friday 
    [7] => Saturday 
) 

这是不漂亮,但它的工作:)。

+0

好的建议首先要有一个静态数组 –

2

答案很简单(需要PHP> = 5.5.0):如果你不需要后面的逗号在每个值

$string = '1,Sunday,2,Monday,3,Tuesday,4,Wednesday,5,Thursday,6,Friday,7,Saturday'; 

$data = array_chunk(
    explode(',', $string), 
    2 
); 
$newArray = array_combine(
    array_column($data, 0), 
    array_column($data, 1) 
); 
var_dump($newArray); 

如果您确实需要后面的逗号结束,您可以添加:

array_walk(
    $newArray, 
    function(&$value) { 
     $value .= ','; 
    } 
); 
+0

我喜欢你的解决方案,尤其是因为它不需要循环! <3 – jeromegamez

+0

谢谢bro.It工作正常。 – Coder

0

这会为你工作。

$string = '1,Sunday,2,Monday,3,Tuesday,4,Wednesday,5,Thursday,6,Friday,7,Saturday.'; 
$dtd = explode(',', $string); 
$array = array(); 
$i = 1; 
foreach ($dtd as $key => $value){ 
    if($key % 2 == 1){ 
     $array[$i++] = $value; 
    } 
} 

print_r($array);//Array ([1] => Sunday [2] => Monday [3] => Tuesday [4] => Wednesday [5] => Thursday [6] => Friday [7] => Saturday.)