1

この回答によると->別の配列に基づいてキーで配列をソートしますか? 、この関数を使用して、別の配列をソートします。

function sortArrayByArray($array,$orderArray) {
    $ordered = array();
    foreach($orderArray as $key) {
        if(array_key_exists($key,$array)) {
            $ordered[$key] = $array[$key];
            unset($array[$key]);
        }
    }
    return $ordered + $array;
}

最初は、このようなコードがあり、正常に動作します

$array1 = array("a","b","c");
$array2 = array("2","5","1");
$array3 = array("2","5","1");
rsort($array3); //5,2,1

for($i=0;$i<3;$i++){
    $customer1[$array2[$i]] = $array1[$i];
}

$properOrderedArray1 = sortArrayByArray($customer1, $array3);

print_r($properOrderedArray1);

しかし、乗算のような論理演算を使用すると、データ型が float であると言ったようなエラーが発生します

//multiply
$a = 100000*100000;
$b = 200000*200000;
$c = 300000*300000;

$array1 = array("a","b","c");
$array2 = array($a,$b,$c);
$array3 = array($a,$b,$c);
rsort($array3); //5,2,1

for($i=0;$i<3;$i++){
    $customer1[$array2[$i]] = $array1[$i];
}

$properOrderedArray1 = sortArrayByArray($customer1, $array3);

print_r($properOrderedArray1);

var_dump($array2);

エラー: 警告: array_key_exists(): 最初の引数は文字列または整数でなければなりません

この問題の解決策はありますか?ありがとう。

4

2 に答える 2