ホームページ  >  記事  >  バックエンド開発  >  PHPの配列操作に関する質問

PHPの配列操作に関する質問

WBOY
WBOYオリジナル
2016-06-20 12:26:51866ブラウズ

$temp = array('k1'=>array('m1' => '1' ,'m2' => '2'),'k2'=>array('m1'=> ;'3','m2'=>'4'));
上記の構造体配列と同様に、
1 の $ 内のキー値を削除する方が合理的です。 temp 配列要素
2. $temp 配列をキー値 'm1'、'm2'
で並べ替えます。現時点で考えられるのは、配列の場合、foreach を使用して配列操作を容易にすることだけです。比較的大きいので非効率に感じますが、何か良い方法はありますか?


ディスカッション (解決策) への返信

total 必要です。そうしないと、誰が操作して誰が操作してはいけないのかがわかりません
でも、誰が通過するかが重要です

$temp = array('k1'=>array('m1' => '1' ,'m2' => '2'),'k2'=>array('m1'=>'3','m2'=>'4'));array_walk($temp, function(&$v) { unset($v['m2']);});print_r($temp);
Array(    [k1] => Array        (            [m1] => 1        )    [k2] => Array        (            [m1] => 3        ))

$temp = array('k1'=>array('m1' => '1' ,'m2' => '2'),'k2'=>array('m1'=>'3','m2'=>'4'));$newArray = array();print_r(array_map("mysort",$newArray,$temp));function mysort($v1,$v2){    $v1['m2'] = $v2['m1'];    $v1['m1'] = $v2['m2'];    return $v1;}


ソートについて, 皆さんのアイデアを参考にして書いていきます。もっと良い方法はありますか?

これは何の並べ替えですか?

array_walk($temp, function(&$v) { krsort($v);});print_r($temp);/*Array(    [k1] => Array        (            [m2] => 2            [m1] => 1        )    [k2] => Array        (            [m2] => 4            [m1] => 3        ))*/

$temp = array('k1'=>array('m1' => '1' ,'m2' => '2'),'k2'=>array('m1'=>'3','m2'=>'4'));array_walk($temp, function(&$v) { krsort($v);});print_r($temp);
Array(    [k1] => Array        (            [m2] => 2            [m1] => 1        )    [k2] => Array        (            [m2] => 4            [m1] => 3        ))

つまり、元の KEY 値のシーケンスは 'm1'、'm2'、そして取得したいシーケンスですは「m2」、「m1」です。特定の要素の値を考慮せずに、カスタム ルールに従って配列キーの順序を変更するだけです。
元の配列
配列
(
[0] => 🎜> )

[1] => 配列
(
[m2] => ; 3
[m1] => 4
)

)
新しい配列
配列
(
[0] => 🎜> )

[1] => 配列
(
[m2] => 3
[m1] => 4

)




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。