PHP ile array'i istediğim sırada (sort order) yapmak?
Elimde API'den gelen bir data var. Ancak ben gelen datayı kendi istediğim sırayla yeniden order etmek istiyorum.
örneğin;
gelen array içerisinde
[
{
"type": "dollar",
"team_A_value": 35.75,
},
{
"type": "euro",
"team_A_value": 33.12,
},
{
"type": "try",
"team_A_value": "0.52,
},
...
...
gibi giden bir data geldiğini düşünelim.
benim burada yapmak istediğim ise şu olacak;
$sortArray = ["try","dollar"];
çıktı istediğim sonuç ise, ben $sortArray değişkenimde "try" ve "dollar" sıralaması ile dataları getir dedim; ancak bunun dışında kalan "euro" veya diğer değerleri getirme.
"Sadece benim seçtiklerimi, benim belirttiğim sıra ile getir" demek istiyorum kısacası.
Nasıl yapabilirim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
<?php
$gelen_veri = [
[
"type" => "dollar",
"team_A_value" => 35.75,
],
[
"type" => "euro",
"team_A_value" => 33.12,
],
[
"type" => "try",
"team_A_value" => 0.52,
],
];
$sortArray = ["try","dollar"];
function customSort($a, $b) {
global $sortArray;
$a_index = array_search($a['type'], $sortArray);
$b_index = array_search($b['type'], $sortArray);
return $a_index - $b_index;
}
usort($gelen_veri, 'customSort');
print_r($gelen_veri);
?>
$data = [
["type" => "dollar", "team_A_value" => 35.75],
["type" => "euro", "team_A_value" => 33.12],
["type" => "try", "team_A_value" => 0.52],
// Diğer elemanlar...
];
$sortArray = ["try", "dollar"];
// Sadece $sortArray içinde belirtilen tipleri içeren öğeleri filtrele
$filteredData = array_filter($data, function ($item) use ($sortArray) {
return in_array($item['type'], $sortArray);
});
// $sortArray'e göre sırala
usort($filteredData, function ($a, $b) use ($sortArray) {
$positionA = array_search($a['type'], $sortArray);
$positionB = array_search($b['type'], $sortArray);
return $positionA - $positionB;
});
print_r($filteredData);