我遇到了填充我的數組的問題。我有一個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]。「);'是語法錯誤。 –
對不起,刪除代碼,以減少發佈的內容 –