0

私がやっていることは、デフォルトの数値キーを使用して基本的な配列を取得することです:

$basic_array = array("value1", "value2", "value3")

そして、その配列を次のように設定された連想配列とマージしたい:

$associative_array = array(array("filename" => "value4"), array("filename" => "value5"), array("filename" => "value6"))

であるため、連想配列の各数値キーには追加の配列セットが含まれます。

次のようなことをするとよいでしょう:

$associative_array = array_merge(
    [combine $basic_array into temp_array set up with same 
        structure of $associative_array, and add $basic_array 
        values into temp_array]
    , $associative_array
);

それは明らかに、配列操作関数のどの組み合わせが $associative_array 構造体をオンザフライでコピーし、各サブ配列の対応するキーを $basic_array の値で満たし、それらをマージできるかによって異なります。

これを行っているのは、basic_array 内のすべてを associative_array と重複排除したいからです。

私は現在これをやっています:

$manual_additions_filenames = array("vtlcvsp.pdf", "vtp.pdf", "vtpsai.pdf", "2990-2.pdf", "2990-8.pdf", "vtxbrl.zip", "vtfrisp.pdf", "vtp.pdf", "vtpsai.pdf", "1939-2.pdf", "cashcollateral.pdf", "cashreserves.pdf");

$associative_array_filenames = array(); //dummy one-dimensional array to store values in filename key of associative array

foreach ($associative_array as $key => $field_array)
{
    $associative_array_filenames[] = $field_array["filename"];
} //pull filename and put into one-dimensional array

$manual_additions = array_diff(
    array_unique($manual_additions_filenames), $associative_array_filenames
); //compare, to get list of unique filenames to be tacked on

foreach ($manual_additions as $value)
{
    $associative_array[]["filename"] = $value;
}

すべてのネイティブ php 配列関数は、これらすべての foreach ループを排除するように設計されているか、そう思ったので、このがらくたをきれいにしたいと思います。

4

1 に答える 1

1

これを試してください:

$basic_array = array("value1", "value2", "value3");
$basic_array = array_unique($basic_array);
$associative_array = array_map(
    function($item) { 
        return ['file_name' => $item];
    }, 
    $basic_array);
于 2019-12-16T20:45:15.083 に答える