我有三个阵列:
$objective = isset($_POST['objective'])?$_POST['objective']:'';
$key_result = isset($_POST['key_result'])?$_POST['key_result']:'';
$doit = isset($_POST['doit'])?$_POST['doit']:'';
Array ( [0] => Objective 1 [1] => Objective 2 )
Array ( [0] => key_result 1 1 [1] => key_result 1 2 [2] => key_result 1 3 [3] => key_result 2 1 [4] => key_result 2 2 )
Array ( [0] => doit [1] => doit 2 )
有什么方法可以得到这样的东西:
Array ( [0] => Array (
[0] => Objective 1
[1] => key_result 1 1
[2] => key_result 1 2
[3] => key_result 1 3
[4] => doit
)
[1] => Array (
[0] => Objective 2
[1] => key_result 2 1
[2] => key_result 2 2
[3] => doit 2
)
)
我尝试了什么:
foreach( $objective as $obj => $ob )
{
$array_test4[] = array($ob, $key_result[$obj], $doit[$obj]);
$test4 = implode('<>',array_map(function ($innerArray) {
return implode("|",$innerArray);
},$array_test4));
}print_r($array_test4);
但我没有得到我想要的东西。我怎样才能做到这一点?
答案 0 :(得分:0)
试试这个:
foreach( $objective as $obj => $ob )
{
$array = array($ob);
$pattern = "/^key_result ".($obj + 1)."/";
$value = (preg_grep($pattern, ($key_result)));
$array = array_merge($array, $value);
$array = array_merge($array, array($doit[$obj]));
$array_test4[] = $array;
}
答案 1 :(得分:0)
我是如何解决我的问题的: 在提交表单之前,我添加了隐藏的输入,我需要将其分开:
<input type='hidden' name="objective[]" value=",">
<input type='hidden' name="objective[]" value="<|>">
然后我将所有数据放在一个数组中:
$objective = isset($_POST['objective'])?$_POST['objective']:'';
我刚删除并更换了不必要的字符后:
$objective = isset($_POST['objective'])?$_POST['objective']:'';
$objective_implode = implode("|", $objective);
$objective_replace = str_replace("|<|>|","<>",$objective_implode);
$objective_replace_end = str_replace("|<|>","",$objective_replace);
$objective_replace_comma = str_replace("|,|",",",$objective_replace_end);
最后我得到了我想要的东西。我实际上不再需要2D阵列了。