我有一个这样的数组$a=("something","something else","another something");
和另一个这样的数组$b=("b","bb")
。
我想制作一个$a = array("something"=>Array("b","bb"),"something else","another something");
. 怎样才能做到这一点?
试试这个,有很多选项,您可以根据位置或数组元素(如@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);
尝试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);
}
哎呀,我的旧答案是废话。谢谢大家指出!
这是我的更新答案:
<?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);