如何分隔字符串并将其插入关联数组

时间:2019-10-16 11:55:53

标签: php arrays

我有一个列表,该列表会不时获取新行,但是我以字符串形式获取它。我想要做的是首先将每一行分开,并将其插入关联数组中。我会给你看一些例子。

我收到的字符串看起来像这样:

id1 name1 lastname1 age1 birthdate1 
id2 name2 lastname2 age2 birthdate2 
id3 name3 lastname3 age3 birthdate3 
id4 name4 lastname4 age4 birthdate4 

我需要将每个“行”和“列”分开,并将其插入关联数组中。所以基本上像这样:

array{

    id1{
        'name' => 'name1',
        'lastname' => 'lastname1',
        'age' => 'age1',
        'birthdate' => 'birthdate1'
    },

    id2{
        'name' => 'name2',
        'lastname' => 'lastname2',
        'age' => 'age2',
        'birthdate' => 'birthdate2'
    },

    id3{
        'name' => 'name3',
        'lastname' => 'lastname3',
        'age' => 'age3',
        'birthdate' => 'birthdate3'
    },

    id4{
        'name' => 'name4',
        'lastname' => 'lastname4',
        'age' => 'age4',
        'birthdate' => 'birthdate4'
    }

}

我希望这些例子能使我的目标更容易理解。

谢谢!

4 个答案:

答案 0 :(得分:0)

如注释中所建议,您将需要将输入拆分为单行,然后可以使用#include<iostream> using namespace std; struct process { public: int p_id,arr_time,burst_time,comp_time; }; void sort_process( process x[],int len) { int i,j; process temp; for(i=0;i<len;i++) { for(j=0;j<len-1;j++) { if(x[j].arr_time > x[j+1].arr_time) { temp = x[j]; x[j] = x[j+1]; x[j+1] = temp; } } } } int main() { int n,i=0,j=0,k=0,t=0,flag; cout<<"\n Enter number of processes : "; cin>>n; process p[n]; for(i=0;i<n;i++) initialize(p[i]); sort_process(p,n); return 0; } explode将每一行拆分为单个值:

str_getcsv()

请参阅:

答案 1 :(得分:0)

您需要将explode()foreach()str_getcsv()array_shift()array_combine()一起使用

<?php


$testString = <<<EOF
id1 name1 lastname1 age1 birthdate1
id2 name2 lastname2 age2 birthdate2
id3 name3 lastname3 age3 birthdate3
id4 name4 lastname4 age4 birthdate4
EOF;

$stringArray = explode("\n", $testString);
$finalArray = array();
foreach ($stringArray as $lineNo => $line) {
    $strArray = str_getcsv($line, ' ', '');
    $firstVal = array_shift($strArray);
    $finalArray[$firstVal] = array_combine(
        array(
            'name',
            'lastname',
            'age',
            'birthdate'
        )
        ,$strArray 
    );
}

print_r($finalArray);

输出:https://3v4l.org/ZWWfE

答案 2 :(得分:0)

试试看:)

$string="id1 name1 lastname1 age1 birthdate1
id2 name2 lastname2 age2 birthdate2
id3 name3 lastname3 age3 birthdate3
id4 name4 lastname4 age4 birthdate4";

$data=array();
$string=explode("n", $string);

foreach ($string as $line) {
  $line=explode(" ", $line);
  $data[$line[0]]=[
    'name' => $line[1],
'lastname' => $line[2],
'age' => $line[3],
'birthdate' => $line[4]              
    ];
}

echo"<pre>";
  print_r($data);
  echo"</pre>";

答案 3 :(得分:0)

您可以将explodeforeach一起使用

$a1 = explode('
', $string);
foreach($a1 as $v){
  $v1 = explode(' ', trim($v));
  $r[$v1[0]] = ['name'=>$v1[1],'lastname'=>$v1[2],'age'=>$v1[3],'birthdate'=>$v1[4]];
}

工作示例:-https://3v4l.org/iU4o6