php help - 使用另一个数组排序多维数组购买

时间:2017-09-02 21:12:40

标签: php arrays

我希望有人可以帮助我,我需要根据第2号阵列的位置命令数组No.1,使用array1->idarray2->products_id

数组No.1

{"products":[{"id": 9847760515,"title":"Some Dress"},{"id": 10769647619,"title":"Shirt"}]}

数组No.2,其中的顺序是:(位置“:x)

{"collects":[{"id":38447047939,"product_id":10769647619,"position":1,"sort_value":"0000000001"},{"id":25425594499,"product_id":9847760515,"position":3,"sort_value":"0000000003"}]}

foreach ($sorted_array as $product) {
 echo $product['name'];
}

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

您可以创建一个函数,它将采用两个数组并按照您需要的任何格式对它们进行排序:

/**
* sort_array will take two arrays and will sort the first based on the second
*
* @param $array the array you want to reorder
* @param $order the array with the pattern
*
* @return array_multisort with reordered array
*/
function sort_array(&$array, $order, $dir = SORT_ASC) {

    // create an empty array here
    $sort = array();

    // loop through the main array
    foreach ($array as $key => $row) {
        $sort[$key] = $row[$order];
    }

    array_multisort($sort, $dir, $array);
}

使用array_multisort,您可以对多维或多维数组进行排序。"有关详细信息,请参阅PHP Manual;有关如何使用它的进一步信息。

我的回答基于以前的answered question Stack Overflow。

答案 1 :(得分:0)

您可以使用usort函数向第二个数组提供订单:

Current Season 2017/2018

我们使用array_combinearray_column函数准备排序字典(Current Season 2017/2018 )。请注意,为了使用array_column函数,您必须将JSON转换为数组数组(将$sort = array_combine( array_column($array2, 'product_id'), array_column($array2, 'position') ); usort($array1, function ($a, $b) use ($sort) { return $sort[$a['id']] - $sort[$b['id']]; }); 作为json_decode函数的第二个参数传递)。

这是working demo.