1

2 つの配列があります。最初の配列にはオブジェクトの値が含まれ、2 番目の配列には ID が含まれています。
この形式では:

$values[0] applies to $ids[0]
$values[1] applies to $ids[1]

最初の配列を( sort() を使用して)最低から最高にソートする必要があります(値はintです)-それは問題ではありません。問題は、配列を値でソートすると、その値のIDが失われることです。
私の質問は:それを作る方法

If $values[0] turns to $values[5], automatically turn $ids[0] to $ids[5]


ありがとう


更新:
$values と $ids の内容:

$values[0] = 1.5;
$values[1] = 2.4;
$values[2] = 15.7;
$values[3] = 11.7;
$values[4] = 4.8;
$values[5] = 0.4;

$ids[0] = 1;
$ids[1] = 2;
$ids[2] = 3;
$ids[3] = 4;
$ids[4] = 5;
$ids[5] = 6;
4

3 に答える 3

4

最初に配列を結合してから、キーで並べ替えます。

$newArr = array_combine($ids, $values);
ksort($newArr);
于 2012-05-29T17:24:22.717 に答える
1

あなたが探しているように聞こえますarray_combine()

<?php
$ids = array(2, 1, 3); // IDs
$values = array(a, b, c); // Values
$array = array_combine($ids, $values); // Combine arrays as ID => Value
ksort($arrays); // Sort new array
print_r($array); // Echo array

出力

Array
(
 1 => b,
 2 => a,
 3 => c,
)
于 2012-05-29T17:23:59.177 に答える
0

以下のコードに従ってください...テストしていません...しかし、動作する必要があります....理解しやすいです。

<?php
$count = count($values);
for($i = 0; $i<$count; $i++)
{
   if($i == 0)
   {
      $sort1 = $values[$i];
      $sort2 = $ids[$i];
      $temp = 0;
   }
   if($sort1 > $values[$i])
   {
      $sort1 = $values[$i];
      $sort2 = $ids[$i];

      $temp_val = $values[$temp];
      $temp_id = $ids[$temp];

      $values['temp'] = $values[$i];
      $ids['temp'] = $ids[$i];

      $temp = $i;

      $values[$i] = $temp_val;
      $ids[$i] = $temp_id;  

   }
}
?>
于 2012-05-29T17:36:04.183 に答える