2014-05-13 25 views
1

我一直在尝试使用键和值来设置数组,但似乎无法让我的代码正常工作。我的阵列的一个例子是如下...从现有阵列创建键值数组(使用Substr)

array(4) { 
    [0]=> 
    string(23) "Dry Traction 4 out of 5" 
    [1]=> 
    string(23) "Wet Traction 4 out of 5" 
    [2]=> 
    string(34) "Steering Responsiveness 4 out of 5" 
    [3]=> 
    string(22) "Noise Level 3 out of 5" 
} 

随着这阵,我使用SUBSTR(),以单独的数字(最后10个字符),但想的字符串的第一部分成为关键。我SUBSTR代码如下...

foreach($array as $item) { 
    $value = substr($item, -10); 
} 

我觉得可怕的问,因为我想这出我自己,但我真的很感激任何和所有帮助!

非常感谢!

回答

0

我不一般喜欢用钥匙在它的空间,但是这会做你想要

$array = array(); 
foreach($array as $item) { 
    $key = trim(substr($item, 0, strlen($item) - 10)); 
    $value = substr($item, -10); 
    $array[$key] = $value; 
} 

Demo

我只是用substr()两倍。第一个也使用strlen()来帮助确定哪里结束我们的子字符串和trim()摆脱空白。第二个与您的代码相同以获取字符串的数字部分。然后我把它放在一个数组中,前者是关键字,后者是数值。

0

约翰answer会做,你也可以做使用array_walk()

$new_arr = array(); //<--- Your new array which is going to be modified 
array_walk($yourarray,function (&$v,$k) use($new_arr) { 
    $new_arr[trim(substr($v,0,-10))] = substr($v,-10); 
}); 
print_r($new_arr);