Php 如何在我的案例中使用Explode?

Php 如何在我的案例中使用Explode?,php,Php,我有一个变量,它包含带有值的文本,如下例所示: $data = "5:7|4:1|504:2|1:3|" 我希望取得这样的成果: $data[5] = 7; $data[4] = 1; $data[504] = 2; $data[1] = 3; $data = array(); foreach (explode("|", $your_data) as $part) { $pieces = explode(':', $part); // Assumes we have 2 pi

我有一个变量,它包含带有值的文本,如下例所示:

$data = "5:7|4:1|504:2|1:3|"
我希望取得这样的成果:

$data[5] = 7;
$data[4] = 1;
$data[504] = 2;
$data[1] = 3;
$data = array();
foreach (explode("|", $your_data) as $part)
{
    $pieces = explode(':', $part);
    // Assumes we have 2 pieces, might want to make sure here...

    $data[$pieces[0]] = $pieces[1];
}
我试过使用explode:

$data = explode("|", $data);

//but it makes $data[0]="5:7"; $data[1]="4:1"; and so on.

我应该再次使用explode吗?这有什么意义吗,还是有别的办法?我想寻求提示或帮助。

当然,
再次爆炸:

$data = "5:7|4:1|504:2|1:3";
$array = array();
foreach (explode('|', $data) as $pair) {
    list($id, $val) = explode(':', $pair);
    $array[$id] = $val;
}

当然,
再次分解

$data = "5:7|4:1|504:2|1:3";
$array = array();
foreach (explode('|', $data) as $pair) {
    list($id, $val) = explode(':', $pair);
    $array[$id] = $val;
}

也许有更聪明的方法,但我会这样做:

$data[5] = 7;
$data[4] = 1;
$data[504] = 2;
$data[1] = 3;
$data = array();
foreach (explode("|", $your_data) as $part)
{
    $pieces = explode(':', $part);
    // Assumes we have 2 pieces, might want to make sure here...

    $data[$pieces[0]] = $pieces[1];
}

此外,我不确定这些数据代表什么,但请记住,数组键将相互覆盖,因此
1:1 | 1:2
将生成一个只有一个项(最后一个项)的数组。可能有很好的理由采取另一种方法。

可能有更聪明的方法,但我会这样做:

$data[5] = 7;
$data[4] = 1;
$data[504] = 2;
$data[1] = 3;
$data = array();
foreach (explode("|", $your_data) as $part)
{
    $pieces = explode(':', $part);
    // Assumes we have 2 pieces, might want to make sure here...

    $data[$pieces[0]] = $pieces[1];
}

此外,我不确定这些数据代表什么,但请记住,数组键将相互覆盖,因此
1:1 | 1:2
将生成一个只有一个项(最后一个项)的数组。可能有很好的理由采取另一种方法。

是的,您应该使用explode两次,如下所示

$newData = array();
$pairs = explode('|',$data);
foreach($pairs as $pair){
   $tmp = explode(':',$pair);
   $newData[$tmp[0]] = $tmp[1];
}

是的,你应该使用explode两次,像这样

$newData = array();
$pairs = explode('|',$data);
foreach($pairs as $pair){
   $tmp = explode(':',$pair);
   $newData[$tmp[0]] = $tmp[1];
}
尝试使用regexp:

$data = preg_split ("\||:", $data);
尝试使用regexp:

$data = preg_split ("\||:", $data);
单行版本:

$data = array_map(function($d) { return (int)explode(":", $d)[1]; }, explode("|", $data));
单行版本:

$data = array_map(function($d) { return (int)explode(":", $d)[1]; }, explode("|", $data));

它将有意义…在这种情况下,您必须使用
explode
func两次…它将有意义…在这种情况下,您必须使用
explode
func两次。。。