2

これは PHP に精通している人にとっては簡単なことだと思いますが、私は頭を過負荷にしてしまったので、array_combine を使用するか、array_merge を使用するか、または他の何かを使用するかについて非常に混乱しています...私はグーグルでphp.netを4時間読んでいますが、さらに混乱していると思います...

基本的に、キーを保持しながら配列を結合したいだけですか?

//Here are the original arrays
[field_sreference] => Array
    (
        [0] => Array
            (
                [nid] => 28
            )

        [1] => Array
            (
                [nid] => 28
            )

        [2] => Array
            (
                [nid] => 29
            )
    )

[field_idelta] => Array
    (
        [0] => Array
            (
                [value] => 0
            )

        [1] => Array
            (
                [value] => 1
            )

        [2] => Array
            (
                [value] => 0
            )
    )

[field_iswitch] => Array
    (
        [0] => Array
            (
                [value] => 0
            )

        [1] => Array
            (
                [value] => 0
            )

        [2] => Array
            (
                [value] => 0
            )
    )

//Here is what I'm trying to achieve:

[combinedarray] => Array
        (
            [0] => Array
                (
                    [nid] => 28
                    [idelta] => 0
                    [iswitch] => 0

                )

            [1] => Array
                (
                    [nid] => 28
                    [idelta] => 1
                    [iswitch] => 0
                )

            [2] => Array
                (
                    [nid] => 29
                    [idelta] => 0
                    [iswitch] => 0
                )
        )
4

2 に答える 2

3

これを解決するには、配列を単純に反復するだけで O(n) です...

$combinedarray = array();
$len = count($field_sreference);
for ($i = 0; $i < $len; $i++) {
    $combinedarray[] = array("nid" => $field_sreference[$i]['nid'], 
                             "idelta" => $filed_idelta[$i]['value'], 
                             "iswitch" => $field_iswitch[$i]['value']);
}

これは、3 つの配列がすべて同じ長さであることを前提としています。

于 2012-04-16T19:26:07.840 に答える
0

少し素早く入力しましたが、これはうまくいくはずです:

$result = array();
foreach ($arrays as $array)
{
    foreach ($array as $index => $data)
    {
        $result[$index] += $data;        
    }
}

簡単な形式で入力配列を提供していないため、自分でテストする必要があります。これは疑似コードであり、演習としてここに残しておきます。+ 演算子は配列共用体演算子です。

于 2012-04-16T19:44:09.053 に答える