阵列多端口不适用于阵列

时间:2016-02-14 19:00:11

标签: php sorting array-multisort

$artists = [
  0 => [
    "id" => "3",
    "plan_id" => "1",
    "name" => "Artist-A",
    "views" => "1189189",
    "soundcloud" => "42",
    "facebook" => "59881948",
    "twitter" => "21760757",
    "youtube" => 0,
    "instagram" => "3429017"
  ],
  1 => [
    "id" => "10",
    "plan_id" => "1",
    "name" => "Artist-B",
    "views" => "1",
    "soundcloud" => 0,
    "facebook" => 0,
    "twitter" => 0,
    "youtube" => 0,
    "instagram" => 0
  ],
  2 => [
    "id" => "2",
    "plan_id" => "1",
    "name" => "Artist-C",
    "views" => "1629",
    "soundcloud" => "20",
    "facebook" => "5025158",
    "twitter" => "582899",
    "youtube" => 0,
    "instagram" => "112127"
  ],
  3 => [
    "id" => "4",
    "plan_id" => "2",
    "name" => "Artist-D",
    "views" => "484353",
    "soundcloud" => "7",
    "facebook" => "104449606",
    "twitter" => "36820201",
    "youtube" => 0,
    "instagram" => "16483226"
  ],
  4 => [
    "id" => "5",
    "plan_id" => "2",
    "name" => "Artist-E",
    "views" => "98765432",
    "soundcloud" => "13",
    "facebook" => "59551072",
    "twitter" => "38995648",
    "youtube" => 0,
    "instagram" => "64997436"
  ]
]

foreach ($remaining_artists as $key => $value) {
   $soundcloud[$key] = $value['soundcloud'];
}

array_multisort($soundcloud, SORT_ASC, $artists);

我使用array_multisort对数组进行排序。它工作得非常好。但是对于上面的数组,存在错误'array_multisort():数组大小不一致'。我真的无法弄清楚这里的问题及其解决方案。

1 个答案:

答案 0 :(得分:0)

您的array_multisort()参数无序。

http://php.net/manual/en/function.array-multisort.php

此外,语法问题。

这有效

<?php

$artists = [
  0 => [
    "id" => "3",
    "plan_id" => "1",
    "name" => "Artist-A",
    "views" => "1189189",
    "soundcloud" => "42",
    "facebook" => "59881948",
    "twitter" => "21760757",
    "youtube" => 0,
    "instagram" => "3429017"
  ],
  1 => [
    "id" => "10",
    "plan_id" => "1",
    "name" => "Artist-B",
    "views" => "1",
    "soundcloud" => 0,
    "facebook" => 0,
    "twitter" => 0,
    "youtube" => 0,
    "instagram" => 0
  ],
  2 => [
    "id" => "2",
    "plan_id" => "1",
    "name" => "Artist-C",
    "views" => "1629",
    "soundcloud" => "20",
    "facebook" => "5025158",
    "twitter" => "582899",
    "youtube" => 0,
    "instagram" => "112127"
  ],
  3 => [
    "id" => "4",
    "plan_id" => "2",
    "name" => "Artist-D",
    "views" => "484353",
    "soundcloud" => "7",
    "facebook" => "104449606",
    "twitter" => "36820201",
    "youtube" => 0,
    "instagram" => "16483226"
  ],
  4 => [
    "id" => "5",
    "plan_id" => "2",
    "name" => "Artist-E",
    "views" => "98765432",
    "soundcloud" => "13",
    "facebook" => "59551072",
    "twitter" => "38995648",
    "youtube" => 0,
    "instagram" => "64997436"
  ]
];

$soundcloud = [];

foreach ($artists as $key => $value) {
   $soundcloud[$key] = $value['soundcloud'];
}

array_multisort($soundcloud, $artists,  SORT_ASC);

print_r($artists);