我有一个变量,让我们称之为$var
,它回应如下:
32-Widgets: 18,28-Widgets: 24,57-Widgets: 45,44-Widgets: 24,55-Widgets: 45
变量是从表单提交和jQuery Sortables的组合创建的(这就是为什么一切都以一个变量结束,而不是两个变量)。订单非常重要。
我最终想要的是两个变量(可以是数组):
$newVar1 = 32,18,24,45,24
$newVar2 = Widgets: 18,Widgets: 24,Widgets: 45,Widgets: 24,Widgets: 45
我开始时:
$newVars = explode(",",$var);
但是我无法从那里去。我尝试过各种各样的陈述,例如:
foreach ($newVars as $newVar) :
//Various explode() functions tried here.
endforeach;
如果有人知道我错过了什么,我一定会感谢你的帮助。
谢谢你, 埃里克
答案 0 :(得分:1)
它不是很漂亮,但它会起作用。
<?php
$str = "32-Widgets: 18,28-Widgets: 24,57-Widgets: 45,44-Widgets: 24,55-Widgets: 45";
$entries = explode(",", $str);
$parts1 = array();
$parts2 = array();
foreach ($entries as $e)
{
$temp = explode("-", $e);
$parts1[] = $temp[0];
$parts2[] = $temp[1];
}
print_r($parts1);
print_r($parts2);
?>
正在运行示例:http://ideone.com/KkL06f
答案 1 :(得分:0)
你有没有试过这样的事情:
public function just_a_test() {
$var = "32-Widgets: 18,28-Widgets: 24,57-Widgets: 45,44-Widgets: 24,55-Widgets: 45";
$vars = explode(',', $var);
$partsA = $partsB = array();
foreach ($vars as $aVar) {
preg_match('/^(\d+)-(Widgets: \d+)$/i', $aVar, $parts);
$partsA []= $parts[0];
$partsB []= $parts[1];
}
echo '<pre>';
print_r($partsA);
print_r($partsB);
echo '</pre>';
}
通过使用每个数组调用implode(),您可以很容易地得到类似于您的输出。