将值放在逗号中

时间:2014-08-28 15:03:40

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

6 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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

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

echo $explode2;

答案 2 :(得分: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

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

答案 3 :(得分: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);

答案 4 :(得分:0)

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

答案 5 :(得分: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的值如下: 2 4 6 7 当你将它们全部打印出来时,它将显示为2467