将一个数组中的值分配给另一个数组中的值

时间:2017-08-24 02:24:04

标签: php

我有三个阵列:

$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);

但我没有得到我想要的东西。我怎样才能做到这一点?

2 个答案:

答案 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阵列了。