2

配列の究極の使用法を発見しながら、私は頭をはるかに超えているように感じます。

最初の配列にはメインキーがあり、値はそのキーに添付されているファイルの数です。

目標は、この最初の配列のキーを 2 番目の配列の値に一致させることですが、それでも Array-1 の (値) カウントを維持 (および表示) しますが、2 番目の配列の値のみです。

ややぼやけて見えるかもしれませんが、ここに配列があります。2 番目の値は、最初のキーと一致する必要があります。(私の問題は、試行するたびに配列 1 の値を失い続けることです。)

これで私を助けてくれることを願っています。

(有効な一致は、125、2051、および 2214 のようなキーです)

配列 1:

Array ( 
    [6960] => 3 
    [2214] => 4 
    [2051] => 4 
    [6944] => 2 
    [6938] => 4 
    [1823] => 1 
    [766] => 6 
    [3993] => 4 
    [5896] => 6 
    [6927] => 2 
    [4220] => 3 
    [77] => 3 
    [83] => 1 
    [125] => 2 
    [6618] => 2 
    [196] => 1
    [4072] => 12
    [3718] => 1
    [5918] => 1
    [3388] => 10
    [4500] => 13
    [5968] => 2
    [3000] => 2
    [942] => 1
    [4246] => 8
    [5868] => 2
    [6394] => 3
    [1168] => 1
    [2163] => 1
    [1827] => 2
    [2071] => 8
    [4597] => 1
    [1702] => 7 
)

配列 2:

Array ( 

    [0] => 1024
    [1] => 1076
    [2] => 111
    [3] => 124
    [4] => 125
    [5] => 1301
    [6] => 1409
    [7] => 2051
    [8] => 2214
    [9] => 2636
    [10] => 3246
    [11] => 4838
    [12] => 6946
    [13] => 6955
    [14] => 6961
    [15] => 73
    [16] => 74
    [17] => 8
)
4

4 に答える 4

1

あなたの質問はやや不明確ですが、これがあなたが探しているものだと思います:

foreach( $array2 as $key)
{
    $count = ( isset( $array1[ $key ]) ? $array1[ $key ] : 0);
    echo $key . ' has ' . $count . ' files.';
}
于 2012-05-29T22:33:15.860 に答える
1

これを行うのはどうですか:

<?php

$arr1 = array(1 => 1000, 500 => 1111, 1000 => 5000, 5000 => 5555);
$arr2 = array(1, 5000);

print_r(array_intersect_key($arr1, array_flip($arr2)));

出力:

(
    [1] => 1000
    [5000] => 5555
)

または、データを使用して:

<?php

$arr1 = array(6960 => 3, 2214 => 4, 2051 => 4, 6944 => 2, 6938 => 4, 1823 => 1, 766 => 6, 3993 => 4, 5896 => 6, 6927 => 2, 4220 => 3, 77 => 3, 83 => 1, 125 => 2, 6618 => 2, 196 => 1, 4072 => 12, 3718 => 1, 5918 => 1, 3388 => 10, 4500 => 13, 5968 => 2, 3000 => 2, 942 => 1, 4246 => 8, 5868 => 2, 6394 => 3, 1168 => 1, 2163 => 1, 1827 => 2, 2071 => 8, 4597 => 1, 1702 => 7);
$arr2 = array(1024, 1076, 111, 124, 125, 1301, 1409, 2051, 2214, 2636, 3246, 4838, 6946, 6955, 6961, 73, 74, 8);

print_r(array_intersect_key($arr1, array_flip($arr2)));

出力:

Array
(
    [2214] => 4
    [2051] => 4
    [125] => 2
)

array_interset_keys値ではなくキーで配列の共通部分を見つけます。2 番目の配列はインデックス ベースの配列 (連想配列ではない) であるため、最初に array_flip を使用してキーと値を反転する必要があります。その後、キーを交差させることができます。

于 2012-05-29T22:36:43.233 に答える
0

うーん..私はあなたが何を意味したいのか理解できないようです..しかし、私がそれを見る方法から..配列1のキーを配列2の値として持ちたい場合..このコードを実行するだけです..

 foreach($array1 as $key=>$val) {
     $array2[] = $key;
 }

これにより、array1 のキーが取得され、array2[] に挿入されます。

これがお役に立てば幸いです..乾杯:)

于 2012-05-29T22:33:33.403 に答える
0

これにより、必要なものが出力されます。

foreach($array2 as $key=>$val) {
     echo $val;
     foreach($array1 as $key2 => $val2){
         if($key == $val2){
             echo $val2;
         }
     }
     echo '\n'; // new line
 }
于 2012-05-29T22:38:28.607 に答える