我有2个PHP数组,我需要将值组合在一起。
First Array
screen
第二个数组
array(2) {
[0]=>
array(1) {
["id"]=>
string(1) "1"
}
[1]=>
array(1) {
["id"]=>
string(2) "40"
}
}
输出所需
array(2) {
[0]=>
string(4) "1008"
[1]=>
string(1) "4"
}
如您所见,我需要在第二个数组中添加一个新的键名(array(2) {
[0]=>
array(1) {
["id"]=>
string(1) "1",
["count"]=>
string(1) "1008"
}
[1]=>
array(1) {
["id"]=>
string(2) "40",
["count"]=>
string(1) "4"
}
}
)并将值组合到我的第一个数组中。
如何组合输出此数组?
答案 0 :(得分:2)
尝试以下内容。我们的想法是迭代第一个数组,并为每个数组索引添加一个新的键" count"保存包含在第二个数组的相同索引上的值。
$array1 = [];
$array2 = [];
for ($i = 0; $i < count($array1); $i++) {
$array1[$i]['count'] = $array2[$i];
}
答案 1 :(得分:1)
你可以这样做
$arr1=[["id"=>1],["id"=>40]];
$arr2=[1008,4];
for($i=0;$i<count($arr2);$i++){
$arr1[$i]["count"] = $arr2[$i];
}
输出
Array
(
[0] => Array
(
[id] => 1
[count] => 1008
)
[1] => Array
(
[id] => 40
[count] => 4
)
)
答案 2 :(得分:1)
另一种功能方法(这不会改变/改变初始数组):
$arr1 = [['id'=> "1"], ['id'=> "40"]];
$arr2 = ["1008", "4"];
$result = array_map(function($a){
return array_combine(['id', 'count'], $a);
}, array_map(null, array_column($arr1, 'id'), $arr2));
print_r($result);
输出:
Array
(
[0] => Array
(
[id] => 1
[count] => 1008
)
[1] => Array
(
[id] => 40
[count] => 4
)
)
答案 3 :(得分:0)
或另一种递归方法:
public object[] Add_Function()
{
return new object[]
{
new object[]
{
new byte[] { 1, 1, 1 }, new byte[] { 1, 1, 1 }, new byte[] { 2, 2, 2 }
},
new object[]
{
new byte[] { 1, 1, 255 }, new byte[] { 0, 0, 1 }, new byte[] { 1, 2, 0 }
}
};
}
[TestCaseSource("Add_Function")]
public void Add(byte[] a, byte[] b, byte[] expected)
{
// arrange
int len = Math.Max(a.Length, b.Length);
Array.Resize(ref a, len);
Array.Resize(ref b, len);
byte[] result = new byte[len];
//act
DoAdd(a, b, result, 0, len - 1);
//assert
CollectionAssert.AreEqual(expected, result);
}
private void DoAdd(byte[] a, byte[] b, byte[] result, int broughtForward, int index)
{
int carriedForward = (a[index] + b[index] + broughtForward) / (byte.MaxValue + 1);
result[index] =(byte)((a[index] + b[index] + broughtForward) % (byte.MaxValue + 1));
if (index > 0)
{
DoAdd(a,b,result, carriedForward, index-1);
}
}
输出:
$arr1=[["id"=>1],["id"=>40]];
$arr2=[1008,4];
foreach ($arr1 as $key=>$value) {
$result[] = array_merge_recursive($arr1[$key], array ("count" => $arr2[$key]));
}
print_r($result);