如何在保留字符串/ int键的同时合并两个数组(一个使用string => value对,另一个使用int => value对)?它们都不会重叠(因为一个只有字符串而另一个只有整数).
这是我当前的代码(不起作用,因为array_merge使用整数键重新索引数组):
// get all id vars by combining the static and dynamic
$staticIdentifications = array(
Users::userID => "USERID",
Users::username => "USERNAME"
);
// get the dynamic vars, formatted: varID => varName
$companyVarIdentifications = CompanyVars::getIdentificationVarsFriendly($_SESSION['companyID']);
// merge the static and dynamic vars (*** BUT KEEP THE INT INDICES ***)
$idVars = array_merge($staticIdentifications, $companyVarIdentifications);
Run Code Online (Sandbox Code Playgroud) 当我使用array_merge()关联数组时,我得到了我想要的东西,但是当我将它们与数字键数组一起使用时,键就会被改变.
随着+该密钥将被保留,但它不与关联数组.
我不明白这是如何工作的,任何人都可以向我解释一下吗?
我需要合并多个词典,这是我的例子:
dict1 = {1:{"a":{A}}, 2:{"b":{B}}}
dict2 = {2:{"c":{C}}, 3:{"d":{D}}
Run Code Online (Sandbox Code Playgroud)
随着A B C与D树的叶,像{"info1":"value", "info2":"value2"}
字典有一个未知的级别(深度),它可能是 {2:{"c":{"z":{"y":{C}}}}}
在我的例子中,它代表一个目录/文件结构,其中节点是docs并且是文件.
我想合并它们以获得:
dict3 = {1:{"a":{A}}, 2:{"b":{B},"c":{C}}, 3:{"d":{D}}}
Run Code Online (Sandbox Code Playgroud)
我不确定如何使用Python轻松完成这项工作.
如何在php中合并n个数组.我的意思是我怎么能这样做:
array_merge(from : $result[0], to : $result[count($result)-1])
OR
array_merge_recursive(from: $result[0], to : $result[count($result) -1])
其中$result包含多个数组的数组在哪里:
$result = Array(
0 => array(),//associative array
1 => array(),//associative array
2 => array(),//associative array
3 => array()//associative array
)
Run Code Online (Sandbox Code Playgroud)
我的结果是:
$result = Array(
0 => Array(
"name" => "Name",
"events" => 1,
"types" => 2
),
1 => Array(
"name" => "Name",
"events" => 1,
"types" => 3
),
2 => Array(
"name" => "Name",
"events" => 1,
"types" => 4
), …Run Code Online (Sandbox Code Playgroud) 在一个软件中,我将两个数组合并为array_merge函数.但我需要将相同的数组(当然具有相同的键)添加到现有数组中.
问题:
$A = array('a' => 1, 'b' => 2, 'c' => 3);
$B = array('c' => 4, 'd'=> 5);
array_merge($A, $B);
// result
[a] => 1 [b] => 2 [c] => 4 [d] => 5
Run Code Online (Sandbox Code Playgroud)
如你所见,'c' => 3错过了.
那么我怎么能用相同的键合并所有这些呢?
如何使它成为array_merge()用两个数组覆盖具有不同值但相同键索引的两个键?
例如,合并:
[0] => 'whatever'
同
[0] => 'whatever', [1] => 'a', [2] => 'b'
应该产生
[0] => 'whatever', [1] => 'a', [2] => 'b'
基本上我希望array_merge与数组有字符串键时的行为方式相同...
我试图将一个项目添加到关联数组的开头.我认为最好的方法是使用array_merge,但我有一些奇怪的后果.我从mysql数据库中获取了产品的id和名称,并将其作为关联数组返回,如此(不是实际数据返回,而是此问题的示例数据,表示数据的大致外观):
$products = array (1 => 'Product 1', 42 => 'Product 42', 100 => 'Product 100');
Run Code Online (Sandbox Code Playgroud)
这将被发送到一个html助手,以创建一个将键与值相关联的下拉列表,并将数组项的值设置为下拉选择控件中的文本.我需要第一个项目是"请选择",键为0,所以我这样做:
$products = array_merge(array(0 => "Select a product" ), $products);
Run Code Online (Sandbox Code Playgroud)
结果数组如下所示:
array(
0 => 'Select a product',
1 => 'Product 1',
2 => 'Product 42',
3 => 'Product 100'
);
Run Code Online (Sandbox Code Playgroud)
当我真正想要的是不丢失关联数组的键.有人告诉我,你可以适当地在我尝试的方式使用array_merge与关联数组,但是,我相信,因为我的键是整数,它不是处理数组作为一个真正的关联数组,并如上图所示对其进行压缩.
问题是:为什么array_merge函数会更改项目的键?我可以阻止这样做吗?或者还有另一种方法可以让我完成我想要做的事情,在数组的开头添加新项目吗?
我只想合并
$a = array("59745506"=>array("up" => 0,));
$b = array("59745506"=>array("text" => "jfrj"));
$c = array_merge_recursive_new($a, $b);
Run Code Online (Sandbox Code Playgroud)
结果:
Array
(
[0] => Array
(
[up] => 0
)
[1] => Array
(
[text] => jfrj
)
)
Run Code Online (Sandbox Code Playgroud)
预期结果:
Array
(
[59745506] => Array
(
[up] => 0
[text] => jfrj
)
)
Run Code Online (Sandbox Code Playgroud)
http://www.php.net/manual/en/function.array-merge-recursive.php中的第2条评论正在运行,它是我案例的最佳解决方案(我需要将数组与多个数字键合并,和2级)?
另一种解决方法是使用array_map实现它(function()...
如何对多维关联数组进行深度扩展(用于解码的JSON对象).我需要PHP的等价于jQuery的$.extend(true, array1, array2)数组而不是JSON和PHP.
这是我需要的一个例子(array_merge_recursive似乎没有做同样的事情)
$array1 = ('1'=> ('a'=>'array1a', 'b'=>'array1b'));
$array2 = ('1'=> ('a'=>'array2a', 'c'=>'array2b'));
$array3 = array_extend($array1, $array2);
//$array3 = ('1'=> ('a'=>'array2a', 'b'=>'array1b', 'c'=>'array2b'))
Run Code Online (Sandbox Code Playgroud)
注意如果array1具有相同的值,则array2将如何覆盖array1(如类的扩展如何工作)
我正在尝试规范化一串以逗号分隔的数字和一个范围.展示:
数组:
$array = ["1","2","5-10","15-20"];
Run Code Online (Sandbox Code Playgroud)
应成为:
$array = [1,2,5,6,7,8,9,10,15,16,17,18,19,20];
Run Code Online (Sandbox Code Playgroud)
我正在研究的算法是:
//get the array values with a range in it :
$rangeArray = preg_grep('[-]',$array);
Run Code Online (Sandbox Code Playgroud)
这将包含["5-10", "16-20"];Then:
foreach($rangeArray as $index=>$value){
$rangeVal = explode('-',$value);
$convertedArray = range($rangeVal[0],$rangeVal[1]);
}
Run Code Online (Sandbox Code Playgroud)
转换后的数组现在包含["5","6","7","8","9","10"] ;
我现在面临的问题是,如何在原始数组中弹出值"5-10",并在$ convertedArray中插入值,以便我将获得值:
$ array = ["1","2","5","6","7","8","9","10","16-20"];
那么,如何将数组插入数组?或者有更清洁的方法来解决这类问题吗?将数字和范围值的数组转换为正确排序的数字数组?
array-merge ×10
php ×9
arrays ×4
arraylist ×1
dictionary ×1
insert ×1
jquery ×1
json ×1
merge ×1
python ×1