2014-01-07 38 views
3

如何通過搜索數組(級別2)中的重複值來刪除數組的行(級別1)?在級別2上刪除級別1數組的數值搜索

$array = array(
    0 => array('name' => 'haha1', 'dateline' => '2014-07-1 00:00:00', 'toid' => '1') 
    1 => array('name' => 'haha2', 'dateline' => '2014-07-1 00:00:00', 'toid' => '2') 
    2 => array('name' => 'haha3', 'dateline' => '2014-07-1 00:00:00', 'toid' => '1') 
    3 => array('name' => 'haha4', 'dateline' => '2014-07-1 00:00:00', 'toid' => '3') 
); 

刪除該行$陣列[2]由於$陣列[2] [ '風溼']是複製到$陣列[0] [ '風溼']。 保持$數組[0],但刪除了$陣列[2]

我想的foreach裏面像下面的foreach,但我想我已經在錯誤的方式使用它們:

$container = array(); //The Container for none duplicated array 

foreach($array as $key => $var){ 
    foreach($container as $k => $v){ 
    if(!array_search($var['toid'], $v['toid'])){ 
     $container[] = $var; 
    } 
    } 
} 

另一個問題:記錄是從MySQL數據庫中取出的,而不是數組方式,是否可以在MySQL中取回沒有重複的行?

是否有可能使用MySQL查詢並使用哪種解決方案更快/更喜歡?

的SQL結構如下:

'id' => auto_increment, int(11) 
'name' => varchar(255) 
'dateline' => datetime, 
'toid' => int(11) 

我如何可以獲取由「日界線」複製「風溼」字段行順序所有無?

+0

關於第一個問題,告訴我們你已經嘗試什麼,它沒有等你的第二個問題是不是特別交代,你沒有提供的信息爲你的MySQL結構/你的MySQL SELECT 。有許多方法可以擺脫MySQL中的重複項,即GROUP BY,但是您需要再告訴我們更多關於您嘗試過的內容。 –

+0

sry忘記告訴mysql結構 我曾嘗試在foreach裏面使用foreach,現在編輯問題 – user259752

+0

謝謝,我試了一下,做了我想要的東西,學到了新東西 – user259752

回答

0

嘗試

$data=array(); 
for($i=0;$i<sizeof($array);$i++){ 
     $tmp=array(); 
    $data = array_unique(array_merge($data,$array[$i])); 
} 

現在重複的條目已被刪除。 現在創建一個多維數組

$output=array(); 
$tmp = &$output; 
foreach($data as &$val){ 
    if(strpos($val,'level') !==false){ 
    if (!is_array($tmp)){ 
      $tmp = array(); 
     } 
     $tmp = &$tmp[$val]; 

    }else{ 
    $tmp[] = $val; 
    } 
} 

echo "<pre>"; 
print_r($output); 
exit();