4

私は多次元配列を持っています。

$shop = array( 
              array("appn1", "pub1" ,"pub2" , "pub3"),
              array("appn2", "pub1"),
              array("appn3", "pub1" ,"pub2")
            ); 

各配列の最初の項目は出願番号で、各配列の残りは公開番号です。このように、各配列の最初の項目(申請番号)と最後の項目(最新の公開番号)を取得します

 $index = count(array_keys($shop));
    for($i=0;$i<$index;$i++){

        $appln_nr = $shop[$i][0];
        echo $appln_nr;

        $publn_nr_index = count(array_keys($shop[$i]))-1;
        $publn_nr = $shop[$i][$publn_nr_index];
        echo $publn_nr;
   }

これで、内部配列ごとに出願番号と公開番号がわかりました。

出願番号と公開番号から連想配列を作成したい。

ここで、キーは出願番号、値は公開番号です。

ありがとう

編集

$shop 配列から得ているもの

 Array
 (
  [0] => Array
    (
        [0] => appn1
        [1] => pub1
        [2] => pub2
        [3] => pub3
    )

  [1] => Array
    (
        [0] => appn2
        [1] => pub1
    )

  [2] => Array
    (
        [0] => appn3
        [1] => pub1
        [2] => pub2
    )
)

そして、これが連想配列に必要なものです

Array(
    "appn1" => "pub3"
    "appn2" => "pub1"
    "appn3" => "pub2"
)
4

5 に答える 5

4

XDを編集した後、最後に私はあなたが何を望んでいるかを理解しました:

$shop = array(
    array("appn1", "pub1" ,"pub2" , "pub3"),
    array("appn2", "pub1"),
    array("appn3", "pub1" ,"pub2")
);
$shopNew = array();

foreach($shop as $value){
    $shopNew[$value[0]] = end($value);
}

// now if you want you can replace $shop and unset $shopNew
$shop = $shopNew;
unset($shopNew);    

print_r($shop); 

出力は次のとおりです。

Array (
  [appn1] => pub3
  [appn2] => pub1
  [appn3] => pub2
)
于 2012-10-12T16:30:47.683 に答える
1

reset最初の要素をキー(を参照)として使用し、最後の要素(を参照end)を値として使用することで、配列を新しい形式に簡単に変換できます。

foreach($shop as $fl) {
    $v[reset($fl)] = end($fl);
}

結果は$vその時です。

配列を変換する場合は、各要素も削除する必要があります。

foreach($shop as $v => $fl) {
    $shop[reset($fl)] = end($fl);
    unset($shop[$v]);
}

結果は$shopその時です。Unsetは、配列からの削除を処理します。

どちらの場合も出力は次のとおりです。

array(3) {
  'appn1' =>
  string(4) "pub3"
  'appn2' =>
  string(4) "pub1"
  'appn3' =>
  string(4) "pub2"
}
于 2012-10-12T16:31:03.227 に答える
1

あなたが試すことができます

$shop = array(
        array("appn1","pub1","pub2","pub3"),
        array("appn2","pub1"),
        array("appn3","pub1","pub2")
        );

$final = array();
array_map(function ($var) use(&$final) {$final[reset($var)] = end($var);}, $shop);
var_dump($final);

出力

array
  'appn1' => string 'pub3' (length=4)
  'appn2' => string 'pub1' (length=4)
  'appn3' => string 'pub2' (length=4)
于 2012-10-12T16:35:02.763 に答える
0

このように作成することもできます。

$arrField = [];
$arrField['id'] = '0001';
$arrField["first_name"] ='Demo Test';
print_r($arrField);

print_r($arrField) は、このような出力を表示します。

Array ( [id] => 0001 [first_name] => Demo Test )
于 2018-11-28T09:11:29.427 に答える
0

これを試して:

 foreach($shop as $k => $v) {            
     $new_arr[$v[0]] = end($v);      
 }

この結果が得られるはずです。

$new_arr = array(
      "appn1" => "pub3",
      "appn2" => "pub1",
      "appn3" => "pub2"-
);
于 2012-10-12T16:31:42.917 に答える