Как отсортировать эти массивы относительно друг друга в PHP?
Есть два массива. В одном содержится имя и цена, допустим цена выполнения заказа на бирже. И во втором массиве содержится порядок в котором должны идти эти элементы. Как это сделать(отсортировать)?
$arr = [
[
$name = 'Masha';
$price = '18';
],
[
$name = 'Masha';
$price = '63';
],
[
$name = 'Masha';
$price = '73';
],
[
$name = 'Masha';
$price = '42';
],
];
$arr1 = [63,18,42,73];
Нужно получить:
$arr = [
[
$name = 'Masha';
$price = '63';
],
[
$name = 'Masha';
$price = '18';
],
[
$name = 'Masha';
$price = '42';
],
[
$name = 'Masha';
$price = '73';
],
];
$arr1 = [63,18,42,73];
Исправлено: Появилась идея. Перебрать $arr1(допустим элемент из этого массива будет равен $arr1_elem) и внутри этого перебора сделать ещё один перебор с получением $price и элементом массива $arr($arr1_elem). Если $arr1_elem = $price, то $arr_elem = $arr_elem у которого $price = $arr1_elem
Ответы (1 шт):
Автор решения: midnightelf18
→ Ссылка
у меня получилось так
<?php
function sort_arr_by_arr($data_arr, $order_arr)
{
$sort_arr = [];
for ($i = 0; $i < count($order_arr); $i++)
{
for ($j = 0; $j < count($data_arr); $j++)
{
if ($order_arr[$i] == $data_arr[$j]['price'])
$sort_arr[] = $data_arr[$j];
}
}
return $sort_arr;
}
$arr = [
['name' => 'Masha', 'price' => '18'],
['name' => 'Masha', 'price' => '63'],
['name' => 'Masha', 'price' => '73'],
['name' => 'Masha', 'price' => '42'],
];
$arr1 = [63,18,42,73];
// вывод функции
var_dump(sort_arr_by_arr($arr, $arr1));