2016-10-05 117 views
0

(添加詳細信息)你好,我有一些麻煩,填充用PHP中的數組 ,我做一個MySQL查詢到2日期間獲得的數據,而這些都是結果:PHP數組刪除一些價值觀和重新排序

"SELECT hours FROM dates WHERE id='2' AND (day BETWEEN 'TODAY' AND 'TODAY +2 DAYS') ORDER BY day ASC, hours ASC" [Seudo code] 

0-> 1:data10 2:-  3:- 
1-> 1:data11 2:-  3:- 
2-> 1:data12 2:-  3:- 
3-> 1:-  2:data23 3:- 
4-> 1:-  2:data24 3:- 
5-> 1:-  2:data25 3:- 
6-> 1:-  2:-  3:data36 
7-> 1:-  2:-  3:data37 
8-> 1:-  2:-  3:data38 

html result from above array

但我需要它是這樣的:

0-> 1:data10 2:data23  3:data36 
1-> 1:data11 2:data24  3:data37 
2-> 1:data12 2:data25  3:data38 

html result with reorder array

並且如果只有一個(或2)列/秒有一個值其它/ S值/ s應該是「 - 」

0-> 1:data10 2:data20  3:data30 
1-> 1:-11  2:data21  3:-31 
2-> 1:data12 2:-22  3:data32 

有沒有辦法刪除或添加「 - 」從數組並重新排序其他值和鍵? 謝謝! PD:請讓我知道,如果我錯過了一些數據。

+1

CA你提供了你的代碼嗎?意味着你已經完成了 –

+0

從數組中刪除「 - 」並不難,但問題在於你想如何將數據重新排列到新陣列中。從你的例子我不知道0-> 2:數據或0-> 3:數據來自哪裏。 – HZS

+1

如果你提供了你的實際查詢,那麼它可能會提供一些你正在努力實現的內容 - 目前沒有足夠的信息來提供有意義的答案 –

回答

0

刪除之後從陣列的一些指標,你想在同一索引格式陣列或者說重新編制與

array_values($array); 

試試這個陣列功能重新排列數組索引。享受Stackoverflow。

0

我爲您寫了以下代碼問題。你希望結果的內部數組有3個鍵,這就是爲什麼我寫了「if($ s_key> = 3)」,你可以根據需要更新它。目前你不需要' - '這就是爲什麼我寫了「if($ val!=' - ')」你可以根據需要添加更多條件。

謝謝。

快樂編碼

//sample data 
 

 
$data = array (array('111','-','222'),array('3333','-','444'),array('-','-','444'),array('4545','77','444'),array('-','454','444'),array('-','98','444')); 
 
$formatted_data = array(); 
 
$f_key = $s_key = 0; 
 
foreach($data as $arr_key => $arr) { 
 
    foreach($arr as $key => $val){ 
 
     if($val != '-'){ 
 
      $formatted_data[$f_key][$s_key] = $val; 
 
      $s_key++; 
 
      if($s_key >= 3){    
 
       $s_key = 0; 
 
       $f_key++; 
 
      }   
 
     } 
 
    } 
 
} 
 
echo '<pre>'; 
 
print_r($formatted_data);

+0

感謝您的回答,代碼連接陣列鍵的數據像這樣0-> 7:008:009:00,在1-> hourshourshours,我試圖構建類似0-> [1] 7:00 [ 2] 8:00 [3] 9:00,感謝問候 –

+0

我編輯了我的回答,從中刪除了測試代碼行。 輸出: 陣列(4){ [0] => 陣列(3){ [0] => 串(3) 「111」 [1] => 串(3) 「222」 [2] => 串(4) 「3333」 } [1] => 陣列(3){ [0] => 串(3) 「444」 [1] => 串( 3) 「444」 [2] => 串(4) 「4545」 } [2] =>數組 (3){ [0] => STR ING(2) 「77」 [1] => 串(3) 「444」 [2] => 串(3) 「454」 } [3] => 陣列(3){ [0] => 串(3) 「444」 [1] => 串(2) 「98」 [2] => 串(3) 「444」 } } –

+0

輸出數組: 陣列 ( [0] =>數組 ( [0] => 111 [1] => 222 [2] => 3333 ) [1] =>數組 ( [0] => 444 [1] => 444 [2] => 4545 ) [2] =>數組 ( [0] => 77 [1] => 444 [2] => 454 ) [3] =>數組 ( [0] => 444 [1] => 98 [2] => 444 ) ) 這就是你想要的朋友? –

0

第一由此代碼刪除數組值:

unset($array[$index]); 

然後再順序是這樣的:

array_values($array);