2014-03-07 150 views
1

目前我有一個腳本,將從數組中收集數據並將其推送到API,但由於某種原因,我不能讓它添加更多,然後一次。foreach循環PHP一旦停止

$ data數組

array 
(
    [0] => Array 
     (
      [_id] => 0 
      [_source] => App 
      [_source_id] => 790006230e91dd6279a42a814bf5965a.jpg 
      [_client_ids] => 2 
      [_parent_ids] => 0 
      [_image] => blank.jpg 
      [_title] => test1 
      [_body] => test1 
     ) 

    [1] => Array 
     (
      [_id] => 1 
      [_source] => App 
      [_source_id] => b3a5a6df0cf1dfc30882b20f8a493092.jpg 
      [_client_ids] => 2 
      [_parent_ids] => 0 
      [_image] => blank.jpg 
      [_title] => test2 
      [_body] => test2 
     ) 

) 

PHP

public function save($data) { 

     $submissionManager = new SubmissionManager($this->container); 

     $returndata = array(); 

     foreach($data as $entry) 
     { 

      $this->mustBeGranted('PERM_SUBMISSION_CREATE'); 

      $saved = array(); 

      $client_ids = explode(',', $entry['_client_ids']); 
      $parent_ids = explode(',', $entry['_parent_ids']); 
      $length = count($client_ids); 

      for($i = 0; $i < $length; $i++){ 
        $input = array_merge($entry, array(
         'client_id' => isset($client_ids[$i]) ? $client_ids[$i] : 0, 
         'parent_id' => isset($parent_ids[$i]) ? $parent_ids[$i] : 0, 
         '_source_id' => $entry['_source_id'] 
        )); 
        $saved[] = $submissionManager->createSubmission($input); 
      } 
      $returndata[ $entry['_id']] = $saved; 
     } 

    } 

基本上只會推第一個數組的API,而不是第二個,即使我已經添加了對-每。

+1

是什麼'returndata'看起來像$,以及何時你實際上做了儲蓄? –

+0

你打算通過使用'explode()'來完成什麼?在兩個內部數組中,'_client_ids'和'_parent_ids'都是單個整數。有些情況下,這些將是一個逗號分隔的字符串? –

回答

1

從foreach循環中移除$ saved = array()並將其放在循環之前。你每次循環開始時分配空陣列

+0

我認爲他正在返回'$ returndata',所以清除'$ saved'實際上對他有幫助。 – sunshinejr

+0

正確,這沒有奏效。 – Brent

+0

清空保存的數組似乎是正常的?它只是用於'for'循環。 – Debflav

0

我會說它有可能$entry['_id']的值不會改變,所以你重新分配到相同的數組鍵。

嘗試,而不是使用簡單:

$returndata[] = $saved;

+0

對不起,這沒有奏效 – Brent

0

對不起固定的問題,這是一件與我createSubmission類......我的壞