1

私は2つの配列を持っています:

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

ここで、$array1にはキーと値があります。ここで、$ array1(as 1)から最初の値を取得し、これがこの配列で繰り返されているかどうかを確認します。

ここでは1が2回繰り返されているので、2つのキー1、10を取得し、$array2からこれらのキーの対応する値を表示します。$ array1の値が繰り返されていない場合は、$array2からこのキーの値を表示したいと思います。

次のように出力を取得したいと思います。

Hello Test
check
error

つまり、$ array1では1,10個のキーの値が同じであるため、$array2の値1と値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 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 に答える
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 に答える