我有一个列表,该列表会不时获取新行,但是我以字符串形式获取它。我想要做的是首先将每一行分开,并将其插入关联数组中。我会给你看一些例子。
我收到的字符串看起来像这样:
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'
}
}
我希望这些例子能使我的目标更容易理解。
谢谢!
答案 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);
答案 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)
您可以将explode
与foreach
一起使用
$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