我有一个可变数量的多维数组,但每个项目都有相同的4个可能值。
例如:
Array
(
[companyid] => 1
[employeeid] => 1
[role] => "Something"
[name] => "Something"
)
但是每个数组都可能有不同的项目数量。
我想将所有数组转换为一个包含大量行的单个表。我尝试了array_merge()但最终得到了一个包含8,12,16 ...列而不是更多行的表。
所以...任何想法?
由于
答案 0 :(得分:2)
没有测试,但您可以尝试以下方法:
$table = array();
$columns = array('companyid' => '', 'employeeid' => '', 'role' => '', 'name' => '');
foreach($array as $item) {
$table[] = array_merge($columns, $item);
}
这应该有效,因为有关array_merge的文档说:
如果输入数组具有相同的字符串键,则后面的值 该密钥将覆盖前一个密钥。
因此,要么获取当前项的值,要么获取可在$columns
数组中指定的默认值。
答案 1 :(得分:1)
$array1=Array
(
"companyid" => 1,
"employeeid" => 4,
"role" => "Something",
"name" => "Something",
);
$array2=Array
(
"companyid" => array(2,2,2),
"employeeid" => 5,
"role" => "Something2",
"name" => "Something2"
);
$array3=Array
(
"companyid" => 3,
"employeeid" => 6,
"role" => "Something3",
"name" => "Something3"
);
//Using array_merge
$main_array["companyid"]=array_merge((array)$array1["companyid"],(array)$array2["companyid"],(array)$array3["companyid"]);
$main_array["employeeid"]=array_merge((array)$array1["employeeid"],(array)$array2["employeeid"],(array)$array3["employeeid"]);
for($i=0;$i<count($main_array["companyid"]);$i++)
echo $main_array["companyid"][$i] + "<br />";
for($i=0;$i<count($main_array["employeeid"]);$i++)
echo $main_array["employeeid"][$i] + "<br />";
我已经测试了上面的代码,看起来是正确的。 您还可以将此代码改进为DRY函数。