2014-08-28 17 views
0

我不知道我是否正确地做了这件事,但我需要$explode2逗号分隔结果。将数值放在逗号中

尝试使用内爆,但我做到了。

有人会给我一个提示吗?

<?php 
$variavel = "2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13"; 
$var = explode(",", $variavel); 
$total_var = count($var); 
$n = 0; 
while($n < $total_var){ 
    $var[$n]; 

    while($n < $total_var){ 
     $explode2 = explode(":", $var[$n]); 
     $explode2 = $explode2[0]; 
     print $explode2; //Result: 2467 | How would: 2,4,6,7 
    $n++; 
    } 
$n++; 
} 
?> 
+1

'$ VAR [$ N];'什么的世界是否这样做? – sjagr 2014-08-28 15:06:01

+1

'print $ explode2。 ',';' – Steve 2014-08-28 15:06:11

+0

@Debflav我明白它有什么用处,但它本身并没有存在的地方。它类似于输入'true;'或''一个字符串';'并且期望它做一些功能。 – sjagr 2014-08-28 15:09:57

回答

0

这里是解决方案:

$variavel = "2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13"; 
$var = explode(",", $variavel); 
$total_var = count($var); 
$n = 0; 
while($n < $total_var){ 
    $explode2 = explode(":", $var[$n]); 
    $tempArray[] = $explode2[0]; 
    $n++; 
} 
$tempString=implode(',',$tempArray); 
echo $tempString; 

额外的细节您的代码

1)你不需要第一while循环。我不知道你打算在那里做什么,但它是多余的。

2)你得到2467而不是2,4,6,7的原因是因为你在while循环中打印出没有换行符或空格。您的$explode2每循环迭代值将是如下:,当你打印出来一起将显示为2467

1

随着当前代码(我不会对其进行验证)只是每个号码保存到数组元素,然后implode底:

$variavel = "2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13"; 
$var = explode(",", $variavel); 
$total_var = count($var); 
$n = 0; 
while($n < $total_var){ 
    //$var[$n]; //what??? 

    while($n < $total_var){ 
     $explode2 = explode(":", $var[$n]); 
     $explode2 = $explode2[0]; 
     $result[] = $explode2; //save to an array 
    $n++; 
    } 
$n++; 
} 
echo implode(",", $result); //implode with , 

编辑:我很无聊:

$variavel = "2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13"; 
preg_match_all('/([^:]+):([^,]+),/', $variavel, $matches); 
$result = array_combine($matches[1], $matches[2]); 

echo implode(',', array_keys($result)); 
echo implode(',', $result); 
0

你可以尝试这样的事情(在循环)

$explode2 .= $explode2[0],','; 

但是你必须检查循环何时结束以消除最后的逗号。 和结束时您可以添加:

echo $explode2; 
0

我不知道你需要的究竟是什么,但在数字键和日期值我会产生一个结果数组。然后你可以使用array_keys()领取钥匙,如果你需要他们:

$variavel = "2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13"; 
$var = explode(",", $variavel); 

$results = array(); 
foreach ($var as $value) 
{ 
    $tmp = explode(':', $value); 
    $results[$tmp[0]] = $tmp[1]; 
} 

// the string you want 
$str = implode(',', array_keys($results)); 

See it in action

这当然只适用于数字/键是唯一的。

0

外环是没有意义的,简单地用一个循环,将值保存到一个数组,然后爆:

$variavel = "2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13"; 
$var = explode(",", $variavel); 
$values = array(); 
foreach ($var as $value) { 
    $exp = explode(':', $value); 
    $values[]=$exp[0]; 
} 
echo implode(',', $values); 
0

如果您只需要2,4,6,7那么你为什么不得到':'指数则得到字符或子字符index - 1