复杂? Eplode()变量我想不出来

时间:2012-12-14 20:56:39

标签: php foreach explode

我有一个变量,让我们称之为$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;

如果有人知道我错过了什么,我一定会感谢你的帮助。

谢谢你, 埃里克

2 个答案:

答案 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(),您可以很容易地得到类似于您的输出。