数组的映射函数

时间:2012-09-11 03:46:45

标签: php map

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

我想制作一个$a = array("something"=>Array("b","bb"),"something else","another something");。怎么能实现这个目标?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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

答案 2 :(得分:-1)

YIKES 我的老答案是垃圾。感谢您指出每个人

这是我更新的答案:

<?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);