将PHP数组转换为键值对数组

3
$myvar是一个数组,长这样:
Array (  
 [aid] => Array (  
  [0] => 2  
  [1] => 1  
 )  
 [oid] => Array(  
  [0] => 2  
  [1] => 1  
 )  
)

我需要设置一个新的变量(称为$attributes),其内容应该类似于以下内容:

$attributes = array(
 $myvar['aid'][0] => $myvar['oid'][0], 
 $myvar['aid'][1] => $myvar['oid'][1], 
 etc...
);

当然,$myvar可能包含更多的项目...

我该如何遍历$myvar并构建$attributes变量?


这个问题不够明确,您应该提供更大的示例集... - NDM
4个回答

7

这里如何有用,您能解释一下吗? - Shakti Singh
$attributes = array_combine($myvar['aid'], $myvar['oid']);(注:这是一段PHP代码,实现将两个数组合并为一个关联数组。) - harpax
就是这样了!非常感谢!我还不完全明白它是如何工作的,但我会更深入地挖掘。 - Feature

0

如果我理解问题正确,就像这样

$attributes = array();
foreach ($myvar['aid'] as $k => $v) {
    $attributes[$v] = $myvar['oid'][$k]; 
}

这样的迭代浪费了很多的计算资源和精力,对于非常大的数组集合来说也是一个瓶颈。使用内置的数组*函数会更加高效。 - Ryan Chouinard

0

您的需求不明确。“当然,$myvar可能包含更多的项目...”有两种可能性

1. 在主数组中有两个以上的数组,例如'aid'、'oid'和'xid'、'yid' 2. 或者有两个主数组,子数组中有许多项,例如“[0]=>2 [1]=>1 [2]=>3”

我认为您在谈论第二种情况,如果是这样,请使用以下代码

$aAid = $myvar['aid'];
$aOid = $myvar['oid'];

foreach ($aAid as $key => $value) {
  $attributes['aid'][$key] = $value;
  $attributes['oid'][$key] = $myvar['oid'][$key];
}

-1

你可以使用foreach遍历数组,并像下面这样获取你想要的键和值

$attributes = array() 
foreach($myvar as $key => $val) {
   $attributes[$key][0] = $val;
}

这与$attributes = $myvar相同。 - I.devries
应该使用 $attributes[$key] = $val[0]; 来满足 OP 的需求。 - Blair McMillan
@blair 你是对的,我改变了我的答案以反映这个变化。 - Michael Roosing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接