呼叫时间通过引用错误,无法修复代码



由于我已更新为PHP 5.4,因此我会在阅读时删除了错误的呼叫时间传递,请删除&应该解决它。确实如此,但是现在我的代码不再起作用了。

我需要从字符串raw400中制作一个关联数组,键beeing t and f加上数字(示例t410和f410),并且值必须是 - 无需 -

之后的值

示例:

t410-1:06,f410-15.4

Schould成为:

key: t410
value: 1:06
key: f410
value 15.4

代码..

$raw400 = 't410-1:06,f410-15.4,t390-1:06,f390-15.6,t370-1:05,f370-16.0,t350-1:05,f350-16.2,t330-1:04,f330-16.3,t310-1:00,f310-16.7';
$array = explode(',',$raw400);
$nm400 = array();
array_walk($array,'walk', $nm400);
function walk($val, $key, $nm400){
$nums = explode('-',$val);
$nm400[$nums[0]] = $nums[1];
}

非常感谢。

只需为此技巧使用parse_str()

<?php
$raw400 = 't410-1:06,f410-15.4,t390-1:06,f390-15.6,t370-1:05,f370-16.0,t350-1:05,f350-16.2,t330-1:04,f330-16.3,t310-1:00,f310-16.7';
parse_str(str_replace(array('-',','),array('=','&'),$raw400),$arr);
print_r($arr);

OUTPUT :

Array
(
    [t410] => 1:06
    [f410] => 15.4
    [t390] => 1:06
    [f390] => 15.6
    [t370] => 1:05
    [f370] => 16.0
    [t350] => 1:05
    [f350] => 16.2
    [t330] => 1:04
    [f330] => 16.3
    [t310] => 1:00
    [f310] => 16.7
)

demo

使用 preg_match_all() array_combine

<?php
$raw400 = 't410-1:06,f410-15.4,t390-1:06,f390-15.6,t370-1:05,f370-16.0,t350-1:05,f350-16.2,t330-1:04,f330-16.3,t310-1:00,f310-16.7';
preg_match_all("/([^-, ]+),([^-,]+)/", $raw400, $res);
$array = array_combine($res[2], $res[1]);
print_r($array);

输出:

 Array
(
    [f410] => 1:06
    [t390] => 15.4
    [f390] => 1:06
    [t370] => 15.6
    [f370] => 1:05
    [t350] => 16.0
    [f350] => 1:05
    [t330] => 16.2
    [f330] => 1:04
    [t310] => 16.3
    [f310] => 1:00
)

最新更新