【问题标题】:How to convert array format如何转换数组格式
【发布时间】:2014-09-09 06:02:11
【问题描述】:

我有一个这样的数组

   $name=["Boxname,X1,X2,Y1,Y2,PID,GENDER,AGE,Bp_Systolic,Bp_Diastolic,X-Value,Y-Value", "LL, 53.3,106.6,33.300000000000004,59.947215189873425,22,MALE,63,Bp_Systolic,120,Bp_Diastolic,80"];

我想这样转换

$row = array (
    array('Boxname', 'X1', 'X2', 'Y2'),
    array('LL', '53.3', '106.6'),

);

任何人都可以告诉如何做到这一点。我对此感到困惑。请帮帮我!

【问题讨论】:

  • 这是什么 - aaa bbb ccc
  • 你的字符串是json字符串吗??
  • 你到底想达到什么目的?
  • 格式无效。只有像 JSON 这样的有效字符串才能成功转换为数组。
  • 它不是 json 它是一个数组。我已经更新了问题

标签: php jquery arrays


【解决方案1】:

您的问题有点不清楚,这是 csv 吗?你可以这样格式化:Sample Output

$name=["Boxname,X1,X2,Y1,Y2,PID,GENDER,AGE,Bp_Systolic,Bp_Diastolic,X-Value,Y-Value", "Boxname:HH, X1:53.3, X2:106.6, Y1:33.300000000000004,Y2:59.947215189873425, PID:22, GENDER:MALE, Age:63,Bp_Systolic:120,Bp_Diastolic:80", "Boxname:HH, X1:53.3, X2:106.6, Y1:33.300000000000004,Y2:59.947215189873425, PID:27, GENDER:FEMALE, Age:56,Bp_Systolic:110,Bp_Diastolic:70"];

// get the headers (keys)
$headers = explode(',',array_shift($name));
$headers = array_splice($headers, 0, 10);
$data = array();
foreach($name as $info) {
    // explode by comma, then explode the headers inside the values
    $temp = array_map(function($piece){
        return explode(':', $piece)[1];
    }, explode(',', $info));
    $data[] = array_combine($headers, $temp); // combine the headers (keys) to the values
}

echo '<pre>';
print_r($data);

这个输出:

Array
(
    [0] => Array
    (
        [Boxname] => HH
        [X1] => 53.3
        [X2] => 106.6
        [Y1] => 33.300000000000004
        [Y2] => 59.947215189873425
        [PID] => 22
        [GENDER] => MALE
        [AGE] => 63
        [Bp_Systolic] => 120
        [Bp_Diastolic] => 80
    )

    [1] => Array
    (
        [Boxname] => HH
        [X1] => 53.3
        [X2] => 106.6
        [Y1] => 33.300000000000004
        [Y2] => 59.947215189873425
        [PID] => 27
        [GENDER] => FEMALE
        [AGE] => 56
        [Bp_Systolic] => 110
        [Bp_Diastolic] => 70
    )
)

如果您想要 csv 文件中的数据,那么只需使用 fputcsv() 函数:

$fp = fopen('your_csv_file.csv', 'w');
foreach($name as $fields) {
    $fields = explode(',', $fields);
    fputcsv($fp, $fields);
}

注意:你必须有写权限。

【讨论】:

  • 我想将这些数据写入 csv :( 不知道该怎么做
  • 这不是问题,我有 11 11 个值,我将数据放在这里作为样本。你能告诉我怎么做吗?
  • @divakar 我修改了我的一些答案,检查修改
【解决方案2】:

我认为这段代码可以:

$name= array("Boxname,X1,X2,Y1,Y2,PID,GENDER,AGE,Bp_Systolic,Bp_Diastolic,X-Value,Y-Value", "Boxname:HH, X1:53.3, X2:106.6, Y1:33.300000000000004,Y2:59.947215189873425, PID:22, GENDER:MALE, Age:63,Bp_Systolic:120,Bp_Diastolic:80", "Boxname:HH, X1:53.3, X2:106.6, Y1:33.300000000000004,Y2:59.947215189873425, PID:27, GENDER:FEMALE, Age:56,Bp_Systolic:110,Bp_Diastolic:70");
foreach($name as $data){
    echo "<pre>";
    print_r(explode(",",$data));
    echo "</pre>";
}

输出:

Array
(
    [0] => Boxname
    [1] => X1
    [2] => X2
    [3] => Y1
    [4] => Y2
    [5] => PID
    [6] => GENDER
    [7] => AGE
    [8] => Bp_Systolic
    [9] => Bp_Diastolic
    [10] => X-Value
    [11] => Y-Value
)
Array
(
    [0] => Boxname:HH
    [1] =>  X1:53.3
    [2] =>  X2:106.6
    [3] =>  Y1:33.300000000000004
    [4] => Y2:59.947215189873425
    [5] =>  PID:22
    [6] =>  GENDER:MALE
    [7] =>  Age:63
    [8] => Bp_Systolic:120
    [9] => Bp_Diastolic:80
)
Array
(
    [0] => Boxname:HH
    [1] =>  X1:53.3
    [2] =>  X2:106.6
    [3] =>  Y1:33.300000000000004
    [4] => Y2:59.947215189873425
    [5] =>  PID:27
    [6] =>  GENDER:FEMALE
    [7] =>  Age:56
    [8] => Bp_Systolic:110
    [9] => Bp_Diastolic:70
)

【讨论】:

    【解决方案3】:

    试试这个代码。这行得通。

    $var = '["Boxname,X1,X2,Y1,Y2,PID,GENDER,AGE,Bp_Systolic,Bp_Diastolic,X-Value,Y-Value", "Boxname:HH, X1:53.3, X2:106.6, Y1:33.300000000000004,Y2:59.947215189873425, PID:22, GENDER:MALE, Age:63,Bp_Systolic:120,Bp_Diastolic:80", "Boxname:HH, X1:53.3, X2:106.6, Y1:33.300000000000004,Y2:59.947215189873425, PID:27, GENDER:FEMALE, Age:56,Bp_Systolic:110,Bp_Diastolic:70"]';
    
    $result = array();
    $main_array = json_decode($var, true);
    for($i = 0; $i < count($main_array); $i++){
        $temp_val = $main_array[$i];
        $curr_array = explode(",", $temp_val);
        $curr_temp_array = array();
        for($j = 0; $j < count($curr_array); $j++){
            $curr_item = explode(":", $curr_array[$j]);
            if(count($curr_item) == 1){
                $curr_temp_array[$j] =  $curr_array[$j];
            }else{
                $curr_temp_array[$curr_item[0]] = $curr_item[1];
            }
        }
        $result[$i] = $curr_temp_array;
    }
    
    var_dump($result);
    

    这是输出:

    array(3) {
      [0]=>
      array(12) {
        [0]=>
        string(7) "Boxname"
        [1]=>
        string(2) "X1"
        [2]=>
        string(2) "X2"
        [3]=>
        string(2) "Y1"
        [4]=>
        string(2) "Y2"
        [5]=>
        string(3) "PID"
        [6]=>
        string(6) "GENDER"
        [7]=>
        string(3) "AGE"
        [8]=>
        string(11) "Bp_Systolic"
        [9]=>
        string(12) "Bp_Diastolic"
        [10]=>
        string(7) "X-Value"
        [11]=>
        string(7) "Y-Value"
      }
      [1]=>
      array(10) {
        ["Boxname"]=>
        string(2) "HH"
        [" X1"]=>
        string(4) "53.3"
        [" X2"]=>
        string(5) "106.6"
        [" Y1"]=>
        string(18) "33.300000000000004"
        ["Y2"]=>
        string(18) "59.947215189873425"
        [" PID"]=>
        string(2) "22"
        [" GENDER"]=>
        string(4) "MALE"
        [" Age"]=>
        string(2) "63"
        ["Bp_Systolic"]=>
        string(3) "120"
        ["Bp_Diastolic"]=>
        string(2) "80"
      }
      [2]=>
      array(10) {
        ["Boxname"]=>
        string(2) "HH"
        [" X1"]=>
        string(4) "53.3"
        [" X2"]=>
        string(5) "106.6"
        [" Y1"]=>
        string(18) "33.300000000000004"
        ["Y2"]=>
        string(18) "59.947215189873425"
        [" PID"]=>
        string(2) "27"
        [" GENDER"]=>
        string(6) "FEMALE"
        [" Age"]=>
        string(2) "56"
        ["Bp_Systolic"]=>
        string(3) "110"
        ["Bp_Diastolic"]=>
        string(2) "70"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 2014-12-18
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      • 2021-07-18
      • 2019-05-19
      • 1970-01-01
      相关资源
      最近更新 更多