1

我有一个这样的数组$a=("something","something else","another something");和另一个这样的数组$b=("b","bb")

我想制作一个$a = array("something"=>Array("b","bb"),"something else","another something");. 怎样才能做到这一点?

4

3 回答 3

1

试试这个,有很多选项,您可以根据位置或数组元素(如@Mike Moore 回答)来执行此操作

$a = array ( 'something', 'something else',  'another something');

$b = array('b', 'bb');

for($i = 0; $i < count($a); $i++)
{
    if($i==0)
    {
        $a[$i] = array('something' => $b);
    }
}


print_r($a);
于 2012-09-11T03:58:17.127 回答
1

尝试array_map以获得更大的灵活性:

function map_a_thing(key, val, compare) {
  if (key == compare)
    return array(key => val);
  else
    return key;
  end
}

$c = array_map('map_a_thing', $a, $b, 'something');

考虑到您本质上是在问一个 map-reduce 问题,您在其中寻找一个函数来根据条件执行给定的操作。

有了这个答案,您可以遍历基本数组并重新映射某些值

$map_targets = array('something', 'some2', 'some45', 'some-other');
foreach ($map_targets as $target) {
    $a = array_map('map_a_thing', $a, $b, $target);
}

另请参阅array_reducearray_filter和通用array_walk

于 2012-09-11T04:04:38.637 回答
-1

哎呀,我的旧答案是废话。谢谢大家指出!

这是我的更新答案:

<?php

$a = array (
    'something',
    'something else',
    'another something'
);

$b = array('b', 'bb');

for($i = 0; $i < count($a); $i++)
{
    if($a[$i] == 'something')
    {
        $a[$i] = array('something' => $b);
    }
}


print_r($a);
于 2012-09-11T03:49:35.633 回答