I有一个变量,该变量包含以下示例的值:
$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];
}
输出:demo
Warning: Undefined array key 1
array (
5 => '7',
4 => '1',
504 => '2',
1 => '3',
'' => NULL,
)
,我不确定这些数据代表了什么,但请记住,数组键将相互覆盖,因此
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;
}
输出:
demo
如果您想将关联值作为字符串解析,则可以使用迭代
$result = [];
foreach (explode('|', rtrim($data, '|')) as $pair) {
[$k, $result[$k]] = sscanf($pair, '%d:%d');
}
var_export($result);
$data = array_map(function($d) { return (int)explode(":", $d)[1]; }, explode("|", $data));
trone使用REGEXP:
Warning: Undefined array key 1
array (
0 => 7,
1 => 1,
2 => 2,
3 => 3,
4 => 0,
)