3

助けてくれてありがとう、私はこの問題で立ち往生しています。説明させてください、私はこの種の配列を持っています。

最初の配列
--------------
配列
(
    [2] => 値7
    [3] => 値8
    [4] => 値9
    [5] => 値10
    [6] => 値11
    [7] => 値12
    [8] => 値13
)
2 番目の配列
--------------
配列
(
    [0] => 配列
        (
            [0] => 5
            [1] => 3
            [2] => 6
        )

    [1] => 配列
        (
            [0] => 8
            [1] => 4
            [2] => 7
        )
)

そして望ましい結果:(2番目の配列値==最初の配列キーの場合; 2番目の配列値を変更)

配列
(
    [0] => 配列
        (
            [0] => 値10
            [1] => 値8
            [2] => 値11
        )

    [1] => 配列
        (
            [0] => 値13
            [1] => 値9
            [2] => 値12
        )
)
4

2 に答える 2

1

あなたarraysがこれらのようなものであると仮定すると:

$array1 = array(
     2 => 'value7',
     3 => 'value8',
     4 => 'value9',
     5 => 'value10',
     6 => 'value11',
     7 => 'value12',
); 
$array2 = array(
    array(
        10 => 5,
        1 => 7,
        2 => 4,
     ),
    array(
        0 => ''
    ),
    array(
        0 => 3
    )    
); 

次に、これは仕事をします:

$keys1 = array_keys($array1);
foreach($array2 as $innerKey => $innerArray) {
    foreach($innerArray as $k => $val) {
        if(in_array($val, $keys1)) {
            $array2[$innerKey][$k] = $array1[$val];
        }
    }
}
var_dump($array2);

出力:

array (size=3)
  0 => 
    array (size=3)
      10 => string 'value10' (length=7)
      1 => string 'value12' (length=7)
      2 => string 'value9' (length=6)
  1 => 
    array (size=1)
      0 => string '' (length=0)
  2 => 
    array (size=1)
      0 => string 'value8' (length=6)
于 2013-10-13T00:43:17.987 に答える
1

配列が正しく表示されていないと思います。これはあなたの質問に答えていますか?

foreach($secondArray as $i => $v){
  if($firstArray[$v])$secondArray[$i] = $firstArray[$v];
}
于 2013-10-13T00:06:07.247 に答える