4

私はこのような2つの同じ長さの配列を持っています:

Array
(
    [0] => a
    [1] => b
    [2] => c
)

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

そして、私はこれで終わりたいです:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
        )
    [1] => Array
        (
            [0] => b
            [1] => 2
        )
    [2] => Array
        (
            [0] => c
            [1] => 3
        )
) 

array_combine上記の値の1つのセットを配列キーにしますが、これは望ましくありません。両方を配列値として作成し、2つの配列の各項目を新しい配列に結合します。

これを行うための組み込み関数はありますか、それとも自分でロールする必要がありますか?

4

3 に答える 3

2

これを試して:

$result = array();
foreach ($array1 as $i => $val) {
    $result[] = array($val, $array2[$i]);
}

http://codepad.viper-7.com/Jx5H1Q

于 2012-09-14T00:47:01.167 に答える
1

これを行うための組み込み関数はありますか

はい

または私は自分自身を転がす必要がありますか?

いいえ

コールバックパラメータとして呼び出しarray_map()てフィードし、2つ以上の配列をフィードすることで、必要に応じてデータを再構築します。null

コード:(デモ

$array1 = ['a', 'b', 'c'];
$array2 = [1, 2, 3];

var_export(array_map(null, $array1, $array2));

出力:

array (
  0 => 
  array (
    0 => 'a',
    1 => 1,
  ),
  1 => 
  array (
    0 => 'b',
    1 => 2,
  ),
  2 => 
  array (
    0 => 'c',
    1 => 3,
  ),
)
于 2019-01-21T14:48:44.233 に答える
0

文字列キーがある場合は、array_merge_recursiveそれらをマージするために使用できます。ただし、そのままでは、何か他のことをする必要があります。例えば:

$result = Array();
$arrays = Array($array1,$array2...);
foreach($arrays as $arr) {
    foreach($arr as $k=>$v) $result[$k][] = $v;
}
于 2012-09-14T00:51:22.927 に答える