这就是我想要做的。
我有一个数组。
$arr = array('value1','value2','value3','value4','value5','value6');
是否可以将每两个值配对为:
$new_arr = array('value1' => 'value2','value3' => 'value4', 'value5' => 'value6');
在第一个数组中,没有键。它们都是价值观。但是我想把它们配对..每个键的顺序相同=>价值(旁边......就像上面的例子一样)
这样的事情可能吗?我非常需要它..
答案 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
是新的结果关联数组。
答案 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];
}
}
注意:如果数组长度为奇数,则忽略最后一个值。