我遇到了填充我的数组的问题。我有一个csv文件,其中有1列包含一些id。我加载和处理CSV和使用数组落得像这样将数据添加到关联数组
array:5 [▼
0 => array:2 [▼
0 => "ID123"
]
1 => array:2 [▼
0 => "ID234"
]
2 => array:2 [▼
0 => "ID345"
]
3 => array:2 [▼
0 => "ID456"
]
4 => array:2 [▼
0 => "ID567"
]
]
使用上的ID,这些ID我打了一个API来获取特定于该ID数据。所以我循环包含的ID,并完成类似下面
$jobData = array();
foreach($csv as $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.somdomain/some.api/get/".$data[0].");
//other curl stuff
$output = curl_exec($ch);
$output = new \SimpleXMLElement($output);
}
阵列现在,如果我输出输出的结果,我得到这样的事情
SimpleXMLElement {#352 ▼
+"Job": SimpleXMLElement {#383 ▼
+"ID": "ID123"
+"Client": SimpleXMLElement {#387 ▼
+"ID": "12345"
}
+"Assigned": SimpleXMLElement {#392 ▼
+"Staff": array:5 [▼
0 => SimpleXMLElement {#403 ▼
+"ID": "12345"
}
1 => SimpleXMLElement {#404 ▼
+"ID": "23456"
}
2 => SimpleXMLElement {#405 ▼
+"ID": "34567"
}
]
}
}
}
所以我需要建立一个数组包含我拥有的所有ID的数据。因此,在上面的foreach循环中,我正在做类似这样的事情。
foreach($csv as $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.somdomain/some.api/get/".$data[0].");
//other curl stuff
$output = curl_exec($ch);
$output = new \SimpleXMLElement($output);
if (!empty($output)) {
$jData['jobInfo'] = array(
'clientId' => (string)$output->Job->Client->ID,
'startDate' => '20160701',
'dueDate' => '20160731'
);
if(!empty($output->Job->Assigned->Staff)) {
foreach ($output->Job->Assigned->Staff as $staff) {
$jData['staffInfo'][] = array(
'staffId' => (string)$staff->ID
);
}
}
}
$jobData[] = $jData;
}
现在,这可以工作到一个点。我添加了一个额外的[] onyo staffInfo元素,因为上面的输出可以显示超过1个职员。我在上面的 的问题是它似乎重复了一些事情。所以jobData数组的输出如下
array:5 [▼
0 => array:4 [▼
"jobInfo" => array:4 [▶]
"staffInfo" => array:5 [▶]
]
1 => array:4 [▼
"jobInfo" => array:4 [▶]
"staffInfo" => array:6 [▶]
]
2 => array:4 [▼
"jobInfo" => array:4 [▶]
"staffInfo" => array:7 [▶]
]
3 => array:4 [▼
"jobInfo" => array:4 [▶]
"staffInfo" => array:8 [▶]
]
4 => array:4 [▼
"jobInfo" => array:4 [▶]
"staffInfo" => array:15 [▶]
]
]
正如你所看到的,元素0对于staffInfo有一个大小为5的数组。元素1增加到6,元素2是7,元素3是8,元素4是15.如果我手动检查API调用的系统, 元素0应该有5,这是正确的。元素1应该有1,元素2应该有1,元素3应该有1,元素4应该有7.
那么,如何阻止将前面的循环结果添加到下一个结果?
感谢
此行:'curl_setopt($ ch,CURLOPT_URL,“https://api.somdomain/some.api/get/”。$ data [0]。“);'是语法错误。 –
对不起,删除代码,以减少发布的内容 –