是否可以通过将每两个值配对为键和值来从现有数组创建数组?

时间:2010-09-24 07:48:35

标签: php arrays

这就是我想要做的。

我有一个数组。

$arr = array('value1','value2','value3','value4','value5','value6');

是否可以将每两个值配对为:

$new_arr = array('value1' => 'value2','value3' => 'value4', 'value5' => 'value6');

在第一个数组中,没有键。它们都是价值观。但是我想把它们配对..每个键的顺序相同=>价值(旁边......就像上面的例子一样)

这样的事情可能吗?我非常需要它..

5 个答案:

答案 0 :(得分:2)

这可能会起到作用:

$res = array();

for ($i = 0; $i + 1 < count($arr); $i = $i + 2) {
    $res[$arr[$i]] = $arr[$i + 1];
}

for ($i = 0; $i + 1 < count($arr); $i = $i + 2) { $res[$arr[$i]] = $arr[$i + 1]; }

答案 1 :(得分:2)

假设阵列中有多个成员,你可以这样做:

for($i=0 ; $i<count($arr)-1 ; $i+=2) {
   $new_array[$arr[$i]] = $arr[$i+1];
}

$arr是您现有的数组,而$new_array是新的结果关联数组。

Working Ideone link

答案 2 :(得分:2)

尝试这样的事情:

$new_arr = array();
for ($i = 0; $i < count($arr); $i += 2) {
    $new_arr[$arr[$i]] = $arr[$i + 1];
}

请注意,如果$arr包含奇数项,则最后一个键索引的值是未定义的。

答案 3 :(得分:1)

当然有可能。

function array_pair($arr) {
    $retval = array();
    foreach ($arr as $a) {
        if (isset($key)) {
            $retval[$key] = $a;
            unset($key);
        }
        else {
            $key = $a;
        }
    }
    return $retval;
}

或者你可以这样做:

function array_pair($arr) {
    $retval = array();
    $values = array_values($arr);
    for ($i = 0; $i < count($values); $i += 2)
         $retval[$values[$i]] = $values[$i + 1];
    return $retval;
}

答案 4 :(得分:0)

具有奇数/偶数索引的方法。

$new_arr = array();
$key = NULL;
for($i=0; $i<count($arr); $i++){
   if($i % 2){ // even indices are values, store it in $new_arr using $key
      $new_arr[ $key ] = $arr[$i];
   }
   else{ // odd indices are keys, store them for future usage
      $key = $arr[$i];
   }
}

注意:如果数组长度为奇数,则忽略最后一个值。