Проблема с дополнением ассоциативного массива

FRIE

Новичок
После выборки из базы, я хочу взять несколько значений, провести над ними вычисления, и вставить в конец ассоциативного массива вычисленное значение, чтобы по нему отсортировать массив

PHP:
while ($myrow = mysql_fetch_array($result)){
$myrow['distance']=distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp']);
}
PHP:
echo var_dump($myrow);
выводит 

[21]=> string(10) "37.5815800" ["x"]=> string(10) "37.5815800" [22]=> string(10) "55.7608030" ["y"]=> string(10) "55.7608030" ["distance"]=> float(2423381)
собственно почему то в массиве полученном из базы данных вот такие значения
[21]=> string(10) "37.5815800" ["x"]=> string(10) "37.5815800"
[22]=> string(10) "55.7608030" ["y"]=> string(10) "55.7608030"

а когда я присоединяю значение то оно выглядит вот так
["distance"]=> float(2423381)

как я прочитал - mysql_fetch_array -- Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.

Видимо в моём случае возвращает оба, так как у вех таблиц есть поле с названием "id".

Как в таком случае присоединить значение distance в таком же формате как x и y?
 

FRIE

Новичок
Сделал вот так

PHP:
$myrow[]=distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp']);
$myrow['distance']=distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp']);
но видимо проблема вот тут

["distance"]=> float(2423381), должно быть что то вроде ["distance"]=> float(7) "2423381"
 

Pez!

Я твой сайт похапе писал
PHP:
$myrow[]['distance']=distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp']);
 

FRIE

Новичок
PHP:
$myrow[]['distance']=distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp']);
неа, так получается массив в массиве.

я сделал вот так

PHP:
$myrow[]="".distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp'])."";
$myrow['distance']="".distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp'])."";
теперь мой ассоциативный массив выглядит как и должен

PHP:
[21]=> string(10) "37.5815800" ["x"]=> string(10) "37.5815800" [22]=> string(10) "55.7608030" ["y"]=> string(10) "55.7608030" [23]=> string(7) "2423381" ["distance"]=> string(7) "2423381"
но дальше мне нужно разбирать массив, я делал вот так

PHP:
while ($myrow = mysql_fetch_array($result)){
         ну и тут вычисления
}
но я уже не могу использовать $result, теперь мне нужно использовать $myrow. Думаю с циклом $for. Сейчас попробую и отпишусь
 

FRIE

Новичок
Получилось вот так

PHP:
while ($myrow = mysql_fetch_array($result)){
$myrow[]="".distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp'])."";
$myrow['distance']="".distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp'])."";
$array[]=$myrow; //новый массив 
$c++; //счётчик для цикла for
}
теперь нужно отсортировать массивы в массиве $array[] по значению индекса 'distance''
 

FRIE

Новичок
ЕЕЕЕЕеееееЕЕЕ!! Получилось, долго мучался, но всё получилось, вот код

PHP:
while ($myrow = mysql_fetch_array($result)){ //тут высчитываем значение которое взяли из двух полей, и полученное значение дописываем к массиву
$myrow['distance']="".distance($myrow['x'],$myrow['xp'],$myrow['y'],$myrow['yp'])."";
$array[]=$myrow;
$c++;
}

function orderBy($array, $field) {  // а тут сортируем массив по полученным значениям в порядке убывания
	$code = "return strnatcmp(\$a['$field'], \$b['$field']);"; 
	usort ($array, create_function('$b,$a', $code)); return $array; 
	} 
$array = orderBy($array, 'distance');
 
Сверху