2012-04-09 149 views
1

合併我有兩個數組:比較兩個數組和PHP

$array1 = array(1=>1,10=>1,12=>0,13=>13); 
$array2 = array(1=>"Hello",10=>"Test",12=>"check",13=>"error"); 

這裏$陣列1具有鍵和值。現在我想從$ array1中獲取第一個值(如1),並且我想檢查這個數組是否重複。

這裏1重複兩次,所以我想取兩個鍵1,10並顯示$ array2中這些鍵的相應值。如果$ array1中的值沒有重複,那麼我只想從$ array2中顯示這個鍵的值。

我想要得到的輸出如下:

Hello Test 
check 
error 

這意味着在$ array1中1,10按鍵具有相同的值,因此合併則顯示的值爲1和10次從$數組2的值。

就像12有0這不會重複,所以只需從$ array2中取12的值。

贊13.

我該怎麼做?

回答

1

這實在是粗糙的,但這樣做的一個簡單的方法可以是:

<? 

$array1 = array(1=>1,10=>1,12=>0,13=>13); 
$array2 = array(1=>"Hello",10=>"Test",12=>"check",13=>"error"); 

$prev = $array1[1]; 

foreach($array1 as $key => $val) 
{ 
    if($val != $prev && $key != 1) 
    { 
     echo '<br />'; 
    } 

    echo $array2[$key].' '; 

    $prev = $val; 
} 

?> 

例子:http://codepad.org/OpLdtStp

這是假設你是第一個關鍵總是要的方式是1

+0

它顯示一個錯誤「注意:未定義的偏移量:0」 – Kichu 2012-04-09 09:25:34

+0

哎呀,更新了代碼 – BenOfTheNorth 2012-04-09 09:26:18

+1

這不會工作,如果數組順序改變http://codepad.org/bpb7g9ji – Nauphal 2012-04-09 09:54:24

0

我給你提供了一個函數,它返回一個數組的值,這個值是一個數組中重複值(作爲值)和值作爲鍵的次數。進一步的任務並不難。

function check_number_of_times_elements_occur_in_array($a)//returns values of array as keys, associating values being their total occurences in the array 
{ 
$r=array(); 
foreach($a as $v) 
    ++$r[$v]; 
return $r; 
} 
0

我認爲這會爲你做數字數組..

function test($array1,$array2) { 
$repeated_values = array_count_values($array1); 
foreach($repeated_values as $key => $value){ 
    if($value > 1) { 
     foreach($array1 as $key1 => $value1){ 
      if($key == $value1){ 
       $repeated_values_keys[] = $key1; 
      } 
     } 
    } 
} 
$str_top = ""; 
foreach($repeated_values_keys as $k){ 
    $str_top .= $array2[$k]." "; 
} 
echo $str_top.'<br/>'; 
foreach($array2 as $key2 => $value){ 
    if(!in_array($key2,$repeated_values_keys)){ 
     echo $value.'<br/>'; 
    } 
} 

}

5
<?php 

$array1 = array(1=>1,10=>1,12=>0,13=>13); 
$array2 = array(1=>"Hello",10=>"Test",12=>"check",13=>"error"); 
$groupedKeys = array(); 
foreach($array1 as $key=>$arr){ 
    $groupedKeys[$arr][] = $key; 
} 
foreach($groupedKeys as $key => $groupedKeyArr){ 
    foreach($groupedKeyArr as $groupedKey){ 
     echo $array2[$groupedKey]; 
    } 
    echo "<br /> "; 
} 

?> 

http://codepad.org/9R9s5lTM

+0

對我來說工作正常...... – Nauphal 2012-04-09 10:18:47

+0

是它很好的答案,但我之前接受過一個 – Kichu 2012-04-09 10:20:16