0

次の2つの配列があります

    $Name = Array
         (
          [0] => A
          [1] => B
          [2] => C
          [3] => D
         )

    $zip = Array
    (
        [0] => 411023
        [1] => 411045
        [2] => 411051
        [3] => 411023
    )

最終的な配列は次のようになります

    $final = Array
         (
          411045 => B
          411051 => C
          411023 => A B
         )

皆さんが私の言いたいことを理解してくれることを願っています。

4

3 に答える 3

1
$name = array ('A', 'B', 'C', 'D');
$zip = array (411023, 411045, 411051, 411023);
$final = array ();

for ($i = 0; $i < sizeof ($zip); $i++)
{
    $n = $name [$i];
    $z = $zip [$i];

    if (!array_key_exists ($z, $final))
        $final [$z] = array ();

    $final [$z][] = $n;
}

print_r ($final);
于 2013-02-19T05:56:57.807 に答える
1

別の解決策は次のとおりです。

<?php
    $Name             = Array('A','B','C','D');
    $zip              = Array(411023,411045,411051,411023);

    $namezip          = array_combine($Name,$zip);
    $res              = array();
    foreach($namezip as $nam=>$zp){
       if(array_key_exists($zp,$res)){
          $res[$zp]  .= " ".$nam;
       }
       else{
          $res[$zp]   = $nam;
       }
    }

    echo "<pre>";
    print_r($res);
?>
于 2013-02-19T06:47:27.827 に答える
1

array_keys()値の範囲を指定できるphps 関数の 2 番目の使用例を探しています。これを使用して、2 番目の配列を単純に反復処理できます。

$final=array();
foreach ($zip as $key=>$anchor) {
  if (! array_key_exists($final,$key))
    $final[$key]=array();
  $final[$key][]=array_keys($name,$anchor);
}

これにより、各要素が再び配列である結果$finalが生成されます。おそらく、必要なものです。スペースで区切られた文字列を要求するかのように質問を解釈することもできます。その場合は、結果の配列をさらに変換するだけです。

foreach ($final as $key=>$val)
  $final[$key]=implode(' ',$val);
于 2013-02-19T05:57:27.750 に答える