關於PHP數組操作的問題

來源:互聯網
上載者:User
$temp = array('k1'=>array('m1' => '1' ,'m2' => '2'),'k2'=>array('m1'=>'3','m2'=>'4'));
像上面結構數組,進行一下操作應該怎麼做比較合理
1.刪除$temp 數組中 key值是 ‘m1’ 的元素
2.對$temp 數組 以 key值 ‘m1'、'm2' 進行以指定順序的排序
目前我能想到的都是使用 foreach 來便利數組進行操作,如果這個數組比較大時,感覺效率不高,又更好的方法嗎?


回複討論(解決方案)

遍曆總是需要的,不然你就不知道誰該操作,誰不該操作
不過由誰遍曆,是有講究的

$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' 。只是按照自訂規則改變數組key的順序,不考慮具體元素的值。
原數組
Array
(
[0] => Array
(
[m2] => 1
[m1] => 2
)

[1] => Array
(
[m2] => 3
[m1] => 4
)

)
新數組
Array
(
[0] => Array
(
[m2] => 1
[m1] => 2
)

[1] => Array
(
[m2] => 3
[m1] => 4
)

)

$temp = array('k1'=>array('m1' => '1' ,'m2' => '2'),'k2'=>array('m1'=>'3','m2'=>'4'));$k = array('m2', 'm1');array_walk($temp, function(&$v) use ($k) { $v = array_combine($k, $v);});print_r($temp);
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.