如何将数组的每两个连续值转换为键/值对?

时间:2010-09-17 09:12:17

标签: php arrays

我有一个如下数组:

array('category_name:', 'c1', 'types:', 't1')

我希望数组的备用值是数组的值:

array('category_name:' => 'c1', 'types:' => 't1')

4 个答案:

答案 0 :(得分:2)

您可以尝试:(未经测试)

$data = Array("category_name:","c1","types:","t1"); //your data goes here
for($i=0, $output = Array(), $max=sizeof($data); $i<$max; $i+=2) {
  $key = $data[$i];
  $value = $data[$i+1];
  $output[$key] = $value;
}

另外:(未经测试)

$output = Array();
foreach($data as $key => $value):
  if($key % 2 > 0) { //every second item
    $index = $data[$key-1];
    $output[$index] = $value;
  }
endforeach;

答案 1 :(得分:1)

function fold($a) {
    return $a 
        ? array(array_shift($a) => array_shift($a)) 
            + fold($a)
        : array();
}

print_r(fold(range('a','p' )));

〜)

upd:真实版本

function fold2($a) {
    $r = array();
    for($n = 1; $n < count($a); $n += 2)
        $r[$a[$n - 1]] = $a[$n];
    return $r;
}

答案 2 :(得分:1)

这是另一个复杂的解决方案:

$keys = array_intersect_key($arr, array_flip(range(0, count($arr)-1, 2)));
$values = array_intersect_key($arr, array_flip(range(1, count($arr)-1, 2)));
$arr = array_combine($keys, $values);

答案 3 :(得分:0)

$array = your array;
$newArray['category_name:'] = $array[1];
$newArray['types:'] = $array[3];