创建多维数组的PHP问题
我有一个数组创建多维数组的PHP问题,php,Php,我有一个数组 [0] => Array ( [0] => Parameter_Key1 [1] => ParameterA [2] => Parameter_Value1 [3] => Parameter_Value2 ) [1] => Array ( [0] => [1] => ParameterB [
[0] => Array
(
[0] => Parameter_Key1
[1] => ParameterA
[2] => Parameter_Value1
[3] => Parameter_Value2
)
[1] => Array
(
[0] =>
[1] => ParameterB
[2] => Parameter_Value1
[3] => Parameter_Value2
)
[2] => Array
(
[0] =>
[1] => ParameterC
[2] => Parameter_Value1
[3] => Parameter_Value2
)
[3] => Array
(
[0] => Parameter_Key2
[1] => ParameterD
[2] => Parameter_Value1
[3] => Parameter_Value2
)
[4] => Array
(
[0] =>
[1] => ParameterE
[2] => Parameter_Value1
[3] => Parameter_Value2
)
[5] => Array
(
[0] =>
[1] => ParameterF
[2] => Parameter_Value1
[3] => Parameter_Value2
)
我正在尝试创建一个新数组,如下所示:
参数_-Key1=>ParameterA{“Parameter_-Value1”,Parameter_-Value2},ParameterB{“Parameter_-Value1”,Parameter_-Value2},Parameter C{“Parameter_-Value1”,Parameter_-Value2}
参数_Key2=>ParameterD{“Parameter_Value1”,Parameter_Value2},ParameterE{“Parameter_Value1”,Parameter_Value2},Parameter{“Parameter_Value1”,Parameter_Value2}
因此,在上面的输出中有两个键,分别命名为参数_Key1和参数_Key2
我必须将所有值添加到参数_Key1,直到在第0个索引处(子数组中)找到另一个值。如果我在第0个索引中找到第2个元素,如“Parameter_Key2”,我需要添加一个新的键值对。
有人能帮忙吗?
很抱歉我的缩进问题。这是一个又快又脏的答案。如果输入数组的内部顺序与foreach的数字顺序不同,则无法工作。。。
$in=[['k1','A','v1','v2'],['','B','v1','v2'],['','C','v1','v2'],['k2','D','v1','v2'],['','E','v1','v2']];//your input
$out=[];
$key='';
//var_dump($in);
foreach($in as $p) {
if($p[0]!='') $key=$p[0];
$out[$key][$p[1]]=[$p[2],$p[3]];
}
var_dump($out);
数组([Parameter_-Key1]=>Array([ParameterA]=>{Parameter_-Value1,Parameter_-Value2},[ParameterB]=>{Parameter_-Value1,Parameter_-Value2})[Parameter_-Key2]=>Array([ParameterD]=>{Parameter_-Value1,Parameter_-Value2},[ParameterE]=>{Parameter,[ParameterF]=>{Parameter\u Value1,Parameter\u Value2})谢谢你的快速回答!!我只是有一个快速的疑问:如果循环没有大括号,你的意思是只对当前行有作用域吗?运行此代码时我也遇到了错误:PHP解析错误:语法错误,意外的“[”行内:$out[$key][$p[1]=[$p[2],$p[3]];if for one语句。许多人不喜欢它,因为这可能会发生:[code]if(false);echo('what');[/code]。语法错误很奇怪。我直接从3v4l中获取它:您可以尝试
=array($p[1],$p[2])
。但这只会对非常旧的PHP版本产生影响。第1行和第2行应该会在那里抛出错误。