1

このような$a=("something","something else","another something");配列と、このような別の配列があります$b=("b","bb")

を製作したいと思い$a = array("something"=>Array("b","bb"),"something else","another something");ます。どうすればこれを達成できますか?

4

3 に答える 3

1

これを試してみてください。位置に基づいて、または@MikeMooreの回答のような配列要素によってこれを行うことができる多くのオプションがあります。

$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

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);
于 2012-09-11T03:49:35.633 に答える