Laravel / PHP如何使用数组映射和排序

时间:2018-10-19 17:00:12

标签: php arrays laravel laravel-5

我正在使用laravel / php构建一个应用程序。我在使用如何映射和排序数组。有没有人可以帮助我解决此问题?我有这两个不同的数组。第一张是标签,第二张是我的数据。

我正在尝试将标签映射到数据并将我的数据从最小到最大排序 但是我只使用javascript做到了。

label data

这是我的示例代码。

$arrayOfObjIssues = $arrayLabelIssues.map(function($d, $i) {
return {
    label: $d,
  data: $arrayDataIssues[$i] || 0
  };
});

  $sortedArrayOfObjIssues = $arrayOfObjIssues.sort(function($a, $b) {
    return $b.data>$a.data;
  });

$newArrayLabelIssues = [];
$newArrayDataIssues = [];
$sortedArrayOfObjIssues.forEach(function($d){
  $newArrayLabelIssues.push($d.label);
  $newArrayDataIssues.push($d.data);
});

如何解决此问题?欢迎所有帮助。预先谢谢你。

4 个答案:

答案 0 :(得分:1)

在PHP中,我们使用->而不是. 点符号

如果$arrayLabelIssues是纯PHP数组,则必须首先将其转换为Laravel集合,才能使用其功能。

所以您将执行以下操作:

$arrayLabelIssues = collect($arrayLabelIssues); // now it's a Laravel Collection object

// and you can use functions like map, foreach, sort, ...
$arrayLabelIssues->map(function($item) {
    // ... your code 
});

答案 1 :(得分:1)

尝试一下(您不需要Laravel的收藏):

// Create empty array that will contain $arr1 as keys and $arr2 as values
$newArray = [];
foreach($arr1 as $i => $item) {
  // Match the two arrays together. Get the same index from the 2nd array.
  $newArray[$item] = $arr2[$i];
}
// Sort the list by value
asort($newArray);

答案 2 :(得分:1)

使用Laravels集合,这非常简单:

$keys = ['B', 'C', 'A'];
$values = [1, 2, 3];

$collection = \Illuminate\Support\Collection::make($keys); // state: ['B', 'C', 'A']
$combined = $collection->combine($values); // state: ['B' => 1, 'C' => 2, 'A' => 3]
$sorted = $combined->sortKeys(); // state: ['A' => 3, 'B' => 1, 'C' => 2]

$sorted->toArray(); // to get the result back as array like shown above

要进一步参考,请查看可用的collection methods

答案 3 :(得分:0)

在集合中如果它具有相同的值那么它不会映射每个值你也可以试试这个

$keys = ['B', 'C', 'A'];
$values = [1, 2, 3];
for($i = 0; $i < sizeof($keys); $i++){
            $maping[$keys[$i]] = $values [$i];
        } // output ['B' => 1, 'C' => 2, 'A' => 3]