猿问

当我尝试对多个数组进行排序时,array_multisort() 不起作用

我有这个数组$mergeArr:


  array (size=5)

  'facebook' => 

    array (size=3)

      'facebook_enabled' => string '1' (length=1)

      'facebook_url' => string 'https://www.facebook.com/' (length=25)

      'facebook_order' => string '7' (length=1)   //order element

  'twitter' => 

    array (size=3)

      'twitter_enabled' => string '1' (length=1)

      'twitter_url' => string 'https://www.twitter.com/' (length=24)

      'twitter_order' => string '9' (length=1)   //order element

  'instagram' => 

    array (size=3)

      'instagram_enabled' => string '1' (length=1)

      'instagram_url' => string 'https://www.instagram.com/' (length=26)

      'instagram_order' => string '2' (length=1)  //order element

  'linkedin' => 

    array (size=3)

      'linkedin_enabled' => string '1' (length=1)

      'linkedin_url' => string 'https://www.linkedin.com/' (length=25)

      'linkedin_order' => string '5' (length=1)  //order element

  'pintrest' => 

    array (size=3)

      'pinterest_enabled' => string '1' (length=1)

      'pinterest_url' => string 'https://www.pinterest.com/' (length=26)

      'pinterest_order' => string '3' (length=1)  //order element

我需要根据*_order每个数组中的元素对其进行排序。


我尝试了下面的代码:


代码 PHP:


array_multisort(array_column($mergeArr, '2'), SORT_ASC, $mergeArr);

预期输出顺序为:Instagram、Pinterest、Linkedin、Facebook、Twiter。


我收到的错误如下


array_multisort():数组大小不一致


你能告诉我如何对这个数组进行排序,这样我才能得到我想要的吗?


长风秋雁
浏览 363回答 1
1回答

慕森卡

如果要比较的字段始终在第 3 个键中,您可以使用usort和array-values 执行此操作:usort($array, function($a, $b) {    $a = array_values($a);    $b = array_values($b);    return $a[2] > $b[2];});现场示例:3v4l
随时随地看视频慕课网APP
我要回答