1

我有两个数组:

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

这里 $array1 有键和值。现在我想从 $array1(as 1) 中获取第一个值,我想检查这是否在这个 array 中重复。

这里 1 重复了两次,所以我想取两个键 1,10 并从 $array2 中显示这些键的相应值。如果 $array1 中的值不重复,那么我只想显示 $array2 中此键的值。

我想得到如下输出:

Hello Test
check
error

这意味着在 $array1 中,1,10 个键具有相同的值,因此值 1 和来自 $array2 的值​​ 10 被合并然后显示。

就像 12 有 0 一样,这不会重复,所以只需从 $array2 中获取 12 的值。

比如13。

我怎样才能做到这一点?

4

5 回答 5

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

于 2012-04-09T10:11:06.353 回答
2

有一个内置函数返回一个数组,其中包含重复值的次数http://php.net/manual/en/function.array-count-values.php

于 2012-04-09T09:43:39.027 回答
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顺便说一句。

于 2012-04-09T09:21:26.823 回答
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;
}
于 2012-04-09T09:37:37.823 回答
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/>';
    }
}

}

于 2012-04-09T09:55:50.827 回答