php数组合并 要保持两个数组的键名都不变

php数组合并 要保持两个数组的键名都不变,第1张

键名如果都是唯一的 写个循环来组一个新的数组就可以了:

$a = array("a" => "avalue", "b" => "bvalue");

$b = array("c" => "cvalue", "d" => "dvalue");

$c = array();

foreach( $a as $key => $value ) {

$c[$key] = $value;

}

foreach( $b as $key => $value ) {

$c[$key] = $value;

}

PHP array_merge() 函数

定义和用法

array_merge() 函数把一个或多个数组合并为一个数组。

提示:您可以向函数输入一个或者多个数组。

注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。

注释:如果您仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引(参见下面的实例 1)。

提示:该函数与 array_merge_recursive() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。

array_unique函数提供了过滤重复的值的功能,但是该函数只能处理一维数组,如果遇到多维数组我们可以现将其转化为一维数组。示例代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/

$data 是你要处理数据

$result 是输出的结果

/

//将其转化为一维数组

foreach ($data as &$row) {

$row = serialize($row);

}

unset($row);

$data = array_unique($data);

//还原多维数组

foreach ($data as &$row) {

$row = unserialize($row);

}

unset($row);

不好意思 楼主要求,我看错了,追加下面的代码

1

2

3

4

5

6

7

8

9

10

11

12

$result=array();

$tmp_arr=array();

foreach ($data as $row) {

$tmp_arr[$row['confuguarable_sku']][] = $row['size'];

}

//将尺寸用逗号拼接

foreach ($tmp_arr as $sku => $size) {

$result[] = array('confuguarable_sku'=>$sku, 'size'=>implode(",", $size));

}

echo "<pre>";

//输出结果

print_r($result);

你想要的结果是什么呢?是将数组组合在一块数组内有多个(8个),那你可以找下函数:

array_push() 将

array 当成一个栈,并将传入的变量压入

array 的末尾。array

的长度将根据入栈变量的数目增加

还有一个你是想要以第一个数组为键值将第二个数组插入第一数组内组成数组,那你可以参考下函数:

array_merge_recursive() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。如果输入的数组中有相同的字符串键名,则这些值会被合并到一个数组中去,这将递归下去,因此如果一个值本身是一个数组,本函数将按照相应的条目把它合并为另一个数组。然而,如果数组具有相同的数组键名,后一个值将不会覆盖原来的值,而是附加到后面。

还有一个可以比对第一个函数,你是想将数组插入前面还是后面,函数如下:

array_unshift() 将传入的单元插入到

array 数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。

返回 array 数组新的单元数目。

array_unshift(array,value1,value2,value3)

函数在数组开头插入一个或多个元素。

$arr = array();

arrray_unshift($arr,$str1,$str2,$str3);

<php 

$a = [1,2];

$b = [1,2,3];

$c = [1];

$result = array();

for ($i = 0; $i < 3; $i ++) {

    $row = array();

    $row[] = empty($a[$i]) '' : $a[$i];

    $row[] = empty($b[$i]) '' : $b[$i];

    $row[] = empty($c[$i]) '' : $c[$i];

    $result[] = $row;

}

var_dump($result);

>

试试上面的代码

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12181823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存