0

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

如果有人知道我缺少什么,我当然会感谢您的帮助。

谢谢你,埃里克

4

2 回答 2

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

于 2012-12-14T21:00:19.557 回答
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() ,您可以轻松地得到像您这样的输出。

于 2012-12-14T21:14:33.540 回答