创建二维阵列会将数据移动到关键位置


Creating a 2D array moves data to key position

我声明以下数组

$job_scope = array( "proposal_id",
                    "will_provide" => array("0","Supervision","Labor","Material","Equpment"),          
                    "general_scope",          
                    "per_bid" => array("Yes","No","Omit"),               
                    "job_type"  => array("Painting","Sandblasting","Scappling")
);

我希望它能像一样创建

array([0] => 'proposal_id',
      [1] => 'will_provide' => array([0] => "0",
                                     [1] => "Supervision",
                                     [2] => "Labor",
                                     [3] => "Material",
                                     [4] => "Equpment"),
      [2] => 'general_scope',
      [3] => 'per_bid'      => array([0] => "Yes",
                                     [1] => "No",
                                     [2] => "Omit"),
      [4] => 'job_type'     => array([0] => "Painting",
                                     [1] => "Sandblasting",
                                     [2] => "Scappling")

但当我打印阵列时,它看起来像

Array ( [0] => proposal_id [will_provide] => Array (
                                                [0] => 0
                                                [1] => Supervision 
                                                [2] => Labor
                                                [3] => Material
                                                [4] => Equpment )
    [1] => general_scope [per_bid] =>    Array ( 
                                               [0] => Yes 
                                               [1] => No 
                                               [2] => Omit )
    [job_type] =>                       Array ( 
                                                [0] => Painting 
                                                [1] => Sandblasting 
                                                [2] => Scappling )

我希望数组的创建格式与代码的第二部分相同。

您所需要做的就是为proposal_idgeneral_scope分配一个空数组。所以代码看起来像这个

$job_scope = array( "proposal_id" => array(),
                "will_provide" => array("0","Supervision","Labor","Material","Equpment"),          
                "general_scope" => array(),          
                "per_bid" => array("Yes","No","Omit"),               
                "job_type"  => array("Painting","Sandblasting","Scappling")
                );

它将产生这个阵列

Array ( 
   [proposal_id] => Array ( ) 
   [will_provide] => Array ( [0] => 0 
                             [1] => Supervision 
                             [2] => Labor 
                             [3] => Material 
                             [4] => Equpment 
                           )
   [general_scope] => Array ( ) 
   [per_bid] => Array ( [0] => Yes 
                        [1] => No 
                        [2] => Omit 
                      ) 
   [job_type] => Array ( [0] => Painting 
                         [1] => Sandblasting 
                         [2] => Scappling 
                       ))

如果您想回调该值,(例如:调用supervision值)。

你所需要做的就是

print_r($job_scope['will_provide'][1])

并且将打印supervision

使用$new_job_scope = array_values($job_scope);

$job_scope = array( 
    "proposal_id",
    "will_provide" => array(
            "0",
            "Supervision",
            "Labor",
            "Material",
            "Equpment"
    ),          
    "general_scope",          
    "per_bid" => array(
        "Yes",
        "No",
        "Omit"
    ),               
    "job_type"  => array(
        "Painting",
        "Sandblasting",
        "Scappling"
    )
);
$new_job_scope = array_values($job_scope);
print_r($new_job_scope);

PhpFiddle

首先创建数组!!!用2D阵列在指定索引处重新分配对我来说会更清楚

<?php
$arr = array('proposal_id','','general_scope','',''); //create array first
$arr[1] = array("will_provide" => array("0","Supervision","Labor","Material","Equpment"));
$arr[3] = array("per_bid" =>  array("Yes","No", "Omit"));
$arr[4] = array("job_type" => array("Painting","Sandblasting","Scappling"));
var_dump($arr);
?>

我认为这个过程可以为您服务。我刚刚使用foreach循环将非int键转换为int键:

$new_array = '';
foreach($job_scope as $k => $v){
    if(is_int($k)){
        $new_array[] = $v;
    }else{
        $new_array[] = [$k => $v];
    }
}
print_r($new_array);

输出为:

Array
(
    [0] => proposal_id
    [1] => Array
        (
            [will_provide] => Array
                (
                    [0] => 0
                    [1] => Supervision
                    [2] => Labor
                    [3] => Material
                    [4] => Equpment
                )
        )
    [2] => general_scope
    [3] => Array
        (
            [per_bid] => Array
                (
                    [0] => Yes
                    [1] => No
                    [2] => Omit
                )
        )
    [4] => Array
        (
            [job_type] => Array
                (
                    [0] => Painting
                    [1] => Sandblasting
                    [2] => Scappling
                )
        )
)