Php 复杂的?Eplode()变量我可以';不明白

Php 复杂的?Eplode()变量我可以';不明白,php,foreach,explode,Php,Foreach,Explode,我有一个变量,我们称之为$var,它的回声类似于: 32小部件:18,28-Widgets:24,57-Widgets:45,44-Widgets:24,55-Widgets:45 该变量是通过表单提交和jQuery排序表的组合创建的(这就是为什么所有内容最终都是一个变量,而不是两个)。订单很重要 最后,我想给出两个变量(可以是数组),它们是: $newVar1 = 32,18,24,45,24 $newVar2 = Widgets: 18,Widgets: 24,Widgets: 45,Wid

我有一个变量,我们称之为
$var
,它的回声类似于:

32小部件:18,28-Widgets:24,57-Widgets:45,44-Widgets:24,55-Widgets:45

该变量是通过表单提交和jQuery排序表的组合创建的(这就是为什么所有内容最终都是一个变量,而不是两个)。订单很重要

最后,我想给出两个变量(可以是数组),它们是:

$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;
如果有人知道我错过了什么,我当然会感谢你的帮助

谢谢,,
埃里克

它不太漂亮,但它会成功的

<?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);

?>


运行示例:

您是否尝试过类似的方法:

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>';
}
public function just_a_test(){
$var=“32小部件:18,28-Widgets:24,57-Widgets:45,44-Widgets:24,55-Widgets:45”;
$vars=分解(',',$var);
$partsA=$partsB=array();
foreach($vars as$aVar){
预匹配('/^(\d+)-(小部件:\d+$/i',$aVar,$parts);
$partsA[]=$parts[0];
$partsB[]=$parts[1];
}
回声';
印刷费($partsA);
打印(partsB);
回声';
}

通过对每个数组调用introde(),您可以很容易地得到像您一样的输出。

另一方面,如果您知道正则表达式总是采用固定格式,我可能会使用正则表达式。例如:
/(\d+)-(小部件:\d+)/i