我想转换/形成以下数组作为示例:
Array ( [product_category] => for-women ) Array ( [brand] => 7-diamonds ) Array ( [size] => 12 ) Array ( [color] => 882536 )
放入一个数组中,将每个数组对合并并将它们放在一起:
Array ( [product_category] => for-women [brand] => 7-diamonds [size] => 12 [color] => 882536 )
我尝试了 array_merge 但没有成功。我的代码中输出的数组来自 $_SESSION,它返回一个数组(一对键 => 值),如下所示:
foreach($_SESSION as $k => $v) {
if (strstr($k, 'saved_query_') == true) {
$saved = array_merge($v);
}
}
因此,我通过循环遍历具有查询的会话来获取每个数组,结果是数组对,我想合并找到的所有对(在这种情况下不知道如何使用 array_merge)。
我尝试了 array_combine 和 array_merge 根据 php 手册,它们看起来不像我需要的功能:
array_combine — 使用一个数组作为键,另一个数组作为值来创建一个数组
我不想这样做,我只想复制/移动一个数组中的小数组,而不更改任何配对/键/值。
您可以尝试使用array_merge
$array0 = Array ( "product_category" => "for-women" );
$array1 = Array ( "brand" => "7-diamonds" ) ;
$array2 = Array ( "size" => "12" ) ;
$array3 = Array ( "color" => "882536" );
$array = array_merge($array0,$array1,$array2,$array3);
print_r($array);
输出
Array ( [product_category] => for-women [brand] => 7-diamonds [size] => 12 [color] => 882536 )
* ----- 更新 ----- *
如果您正在浏览会话
$_SESSION = Array();
$_SESSION[0] = Array("product_category" => "for-women");
$_SESSION[1] = Array("brand" => "7-diamonds");
$_SESSION[2] = Array("size" => "12");
$_SESSION[3] = Array("color" => "882536");
$final = array();
foreach ( $_SESSION as $key => $value ) {
$final = array_merge($final, $value);
}
print_r($final);
$result = array_merge_recursive($ar1, $ar2 [, array $...]);
请使用
array_merge
来代替。
$ret = array_merge($arr1, $arr2, $arr3);
使用您的代码,您应该这样做:
$saved = array_merge($saved, $v);
您应该看看 PHP 中的 array_merge() 函数:http://php.net/manual/en/function.array-merge.php
简单使用如下:
$array1 = Array ( [product_category] => for-women );
$array2 = Array ( [brand] => 7-diamonds );
$array3 = Array ( [size] => 12 );
$array4 = Array ( [color] => 882536 );
$combined = array_merge($array1, $array2, $array3, $array4);
要按第一级前缀过滤 2d 会话数组并将有效负载减少为平面关联数组(假设不可能发生键冲突),请在循环的条件块内使用数组联合赋值运算符 (
+=
)。 这会将每行的关联元素推入结果数组中,而不会创建不需要的深度。 即使您的行有多个元素,结果数组仍然是平坦的。
代码:(演示)
$_SESSION = [
'junk' => ['foo' => 'bar'],
'saved_query_1' => ['product_category' => 'for-women'],
'saved_query_2' => ['brand' => '7-diamonds'],
'junk2' => ['not valuable' => 'rubbish'],
'saved_query_number' => ['size' => 12],
'saved_query_11' => ['color' => 882536],
];
$saved = [];
foreach($_SESSION as $k => $v) {
if (str_starts_with($k, 'saved_query_')) {
$saved += $v;
}
}
var_export($saved);
输出:
array (
'product_category' => 'for-women',
'brand' => '7-diamonds',
'size' => 12,
'color' => 882536,
)