我不知道我是否采取了正确的方式,但我需要$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++;
}
?>
答案 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));
这当然只有在数字/键是唯一的情况下才有效。
答案 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