从现有阵列创建键值数组(使用Substr)

时间:2014-05-13 01:04:08

标签: php arrays

我一直在尝试使用键和值设置数组,但似乎无法使我的代码正常工作。我的数组的一个例子如下......

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);
}

我觉得我觉得很糟糕,因为我想自己解决这个问题,但我非常感谢所有人的帮助!

非常感谢你!

2 个答案:

答案 0 :(得分: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()来消除空格。第二个与获取字符串数字部分的代码相同。然后我把它放到一个数组中,前者为键,后者为值。

答案 1 :(得分: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);