我想将两个数组相互合并:
$filtered = array(1 => 'a', 3 => 'c');
$changed = array(2 => 'b*', 3 => 'c*');
Run Code Online (Sandbox Code Playgroud)
合并应包括其中所有元素的$filtered所有元素以及$changed具有相应键的所有元素$filtered:
$merged = array(1 => 'a', 3 => 'c*');
Run Code Online (Sandbox Code Playgroud)
array_merge($filtered, $changed)将增加的附加键$changed进入$filtered为好.所以它并不适合.
我知道我可以$keys = array_intersect_key($filtered, $changed)用来获取两个数组中存在的密钥,这已经是工作的一半.
但是我想知道是否有任何(本机)函数可以将$changed数组减少到具有$keys指定的数组array_intersect_key?我知道我可以使用array_filter回调函数并在$keys其中进行检查,但是可能还有一些其他纯粹的本机函数只能从一个可以指定键的数组中提取那些元素?
我问,因为本机函数通常比array_filter回调快得多.
我需要合并这两个数组:
$ar1 = array("color" => array("red", "green"), "aa");
$ar2 = array("color" => array( "green", "blue"), "bb");
$result = array_merge_recursive($ar1, $ar2);
Run Code Online (Sandbox Code Playgroud)
预期产量:
[
'color' => [
(int) 0 => 'red',
(int) 1 => 'green',
(int) 3 => 'blue'
],
(int) 0 => 'aa',
(int) 1 => 'bb'
]
Run Code Online (Sandbox Code Playgroud)
但它输出:
[
'color' => [
(int) 0 => 'red',
(int) 1 => 'green',
(int) 2 => 'green', (!)
(int) 3 => 'blue'
],
(int) 0 => 'aa',
(int) 1 => 'bb'
]
Run Code Online (Sandbox Code Playgroud)
我正在寻找最简单的方法,我的数组输入不会比那些例子更深.
我有1个数组,我想重新索引.我发现两个array_values和array_merge函数都可以完成这项工作(我不需要2个数组来使array_merge函数工作).
对于非常大的阵列来说哪个更快?我会对此进行基准测试,但我不知道如何也没有大阵列.
在重新索引之前:
Array
(
[0] => AB
[4] => EA
[6] => FA
[9] => DA
[10] => AF
)
Run Code Online (Sandbox Code Playgroud)
重新索引后:
Array
(
[0] => AB
[1] => EA
[2] => FA
[3] => DA
[4] => AF
)
Run Code Online (Sandbox Code Playgroud) 我有一些默认配置,以及一些可配置的特定配置.我需要将特定配置合并到默认配置中.
value是标量的情况下,应该应用特定配置value是标量数组,则应合并数组并应用array_unique.value是一个关联数组,我们需要应用上面scalar和scalar_array规则.例:
$defaultConfigs = [
'scalar1' => 1,
'scalar2' => "Apple",
'array_scalar' => [3,4,5],
'array_associative' => [
'scalar' => 1,
'array_scalar' => [1,2,3],
'array_associative' => [
...
]
],
];
$specificConfigs = [
'scalar1' => "A",
'array_scalar' => [3,4,5],
'array_associative' => [
'scalar' => 1,
'array_scalar' => [1,2,3],
'array_associative' => [
...
]
],
];
Run Code Online (Sandbox Code Playgroud)
预期产出:
$expectedConfigs = [
'scalar1' => "A", // Overridden
'scalar2' => …Run Code Online (Sandbox Code Playgroud) 请帮助我,我需要合并多个数组,然后按数组值计数排序.以下是问题:
$array1 = array("abc", "def", "ghi", "jkl", "mno");
$array2 = array("mno", "jkl", "mno", "ghi", "pqr", "stu");
$array3 = array_merge($array1, $array2);
$array4 = ???
print_r($array4);
Run Code Online (Sandbox Code Playgroud)
我想要这样的回报$array4:
Array
(
[0] => mno
[1] => ghi
[2] => jkl
[3] => abc
[4] => def
[5] => pqr
[6] => stu
)
Run Code Online (Sandbox Code Playgroud) 好吧,如果觉得这应该是很简单的,并通过一个函数来完成类似array_merge()或array_merge_recursive,但我不能完全弄清楚.我有两个简单的数组,如下面的(简化)示例.我只是想根据它们的索引将它们合并到一个数组中.
$ array 1:
Array (
[0] => Array (
[ID] => 201
[latLng] => 45.5234515, -122.6762071
)
[1] => Array (
[ID] => 199
[latLng] => 37.7931446, -122.39466520000002
)
)
Run Code Online (Sandbox Code Playgroud)
等等…
$ array2:
Array (
[0] => Array (
[distance] => 1000
[time] => 10
)
[1] => Array (
[distance] => 1500
[time] => 15
)
)
Run Code Online (Sandbox Code Playgroud)
$ desiredResult:
Array (
[0] => Array (
[ID] => 201
[latLng] => 45.5234515, -122.6762071
[distance] => …Run Code Online (Sandbox Code Playgroud) 我有以下数组:
$arr = array(6 => 'Somedata', 7 => 'Somedata1', 8 => 'Somedata2');
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用时array_merge( (array) "Select the data", $arr);,它确实将数组键更改为:
Array
(
[0] => Not specified
[1] => Somedata
[2] => Somedata1
[3] => Somedata2
)
Run Code Online (Sandbox Code Playgroud)
是否可以跳过array_merge关键的预翻译,所以输出看起来像这样?
Array
(
[0] => Not specified
[6] => Somedata
[7] => Somedata1
[8] => Somedata2
)
Run Code Online (Sandbox Code Playgroud) 我有这样的数组.........
Array
(
[0] => Array
(
[0] => rose
[1] => monkey
[2] => donkey
)
[1] => Array
(
[0] => daisy
[1] => monkey
[2] => donkey
)
[2] => Array
(
[0] => orchid
[1] => monkey
[2] => donkey
)
)
Run Code Online (Sandbox Code Playgroud)
我想要这样.........
Array
(
[0] => rose
[1] => monkey
[2] => donkey
[3] => daisy
[4] => monkey
[5] => donkey
[6] => orchid
[7] => monkey
[8] => donkey
)
Run Code Online (Sandbox Code Playgroud)
....我使用了数组合并但它没有工作,因为我的数组生成动态,每次显示不同的数组.问题是我无法在array_merge()函数中动态传递数组.它只接受数组的手动条目而不接受任何其他变量.function只接受数组.
它像这样工作......
$total_data …Run Code Online (Sandbox Code Playgroud) 我有两个具有id键的数组数组,我想根据该数组的键和键值将数据合并在一起.数据看起来像:
$color = [
['id' => 1, 'color' => 'red'],
['id' => 2, 'color' => 'green'],
['id' => 3, 'color' => 'blue'],
];
$size = [
['id' => 1, 'size' => 'SM'],
['id' => 2, 'size' => 'XL'],
['id' => 3, 'size' => 'MD'],
['id' => 4, 'size' => 'LG'],
];
$combined = [
['id' => 1, 'color' => 'red', 'size' => 'SM'],
['id' => 2, 'color' => 'green', 'size' => 'XL'],
['id' => 3, 'color' => 'blue', …Run Code Online (Sandbox Code Playgroud) 我有2个数组要合并.第一个数组是多维的,第二个数组是单个数组:
$a = array(
array('id'=>'1', 'name'=>'Mike'),
array('id'=>'2', 'name'=>'Lina'),
);
$b = array('id'=>'3', 'name'=>'Niken');
Run Code Online (Sandbox Code Playgroud)
如何合并2个数组以具有相同的数组深度?