Php 用逗号表示值

Php 用逗号表示值,php,Php,我不知道我的方法是否正确,但我需要$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

我不知道我的方法是否正确,但我需要
$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++;
}
?>

使用当前代码(我不打算验证它),只需将每个数字保存到一个数组元素中,然后在结尾处
内爆

$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 ,

您可以尝试这样的方法(在循环中)

但您必须检查循环何时结束,以消除最后一个逗号。 最后,您可以添加:

echo $explode2;

我不确定您到底需要什么,但我会生成一个结果数组,其中数字是键,日期是值。然后,如果需要,可以使用
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));


当然,这只有在数字/键是唯一的情况下才有效。

外部循环没有意义,只需使用一个循环,将值保存到数组中,然后内爆:

$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);

如果您只需要
2,4,6,7
,那么为什么不获取
的索引:“
然后获取字符或子字符串
索引-1

以下是解决方案:

$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;
$variavel=“2:2014-07-13,4:2014-08-13,6:2014-08-13,7:2014-08-13”;
$var=explode(“,”,$variavel);
$total_var=计数($var);
$n=0;
而($n<$total\u var){
$explode2=explode(“:”,$var[$n]);
$tempArray[]=$2[0];
$n++;
}
$tempString=内爆(“,”,$tempArray);
echo$tempString;
有关代码的其他详细信息

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

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

$var[$n]这到底是做什么的?
打印$explode2'@Debflav我理解它的功能,但它本身并没有位置。这类似于键入
true
“字符串”并希望它能起作用。为什么在
while
中使用
while
$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);
$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;