如何在我的情况下使用爆炸


How to use Explode in my case?

我有一个变量,根据下面的示例,它包含带值的文本:

$data = "5:7|4:1|504:2|1:3|"

我想取得这样的结果:

$data[5] = 7;
$data[4] = 1;
$data[504] = 2;
$data[1] = 3;

我尝试过爆炸:

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

我应该再次使用爆炸吗?它有意义吗,或者还有其他方法吗?我想寻求一个提示或帮助。

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

$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:

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

是的,你应该使用两次爆炸,就像这个

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

尝试使用regexp:

$data = preg_split ("'||:", $data);

单行版本:

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