데이터베이스의 사용자 백분위 수를 계산하려고합니다. 이 작업을 수행하려면 배열을 정렬해야하는 $data
배열이 있어야합니다.PHP Int를 문자열로 Typecasting - 예상대로 작동하지 않습니다.
User_ID
, Total_User_Orders
및 Total_Orders
을 포함하는 쿼리 개체가 있습니다. 다음 코드는 지금까지 보이는 방법은 다음과 같습니다
// Loop through the users
foreach($query->result() as $row)
{
(string)$user_id = (string)$row->user_id;
$data[$user_id] = number_format((($row->total_user_orders/$row->total_orders)*100), 5);
}
// Sort the $data array
array_multisort($data);
print_r($data);
(내가 믿는)해야 그 문자열로 $row->user_id
(int를) 캐스트 무엇. 그런 다음 $data[$user_id]
색인을 문자열로 설정해야합니다. 맞습니까?
array_multisort
을 사용하여 배열을 정렬 할 때 인덱스가 문자열이 아닌 Integer 인 것처럼 정렬합니다. 이것은 그것이 색인을 잃는다는 것을 의미합니다.
array_multisort()
에 대한 PHP 설명서, "연관 (문자열) 키는 유지되지만 숫자 키는 다시 색인화됩니다.". 나는 또한 array_multisort($data, SORT_STRING)
을 사용해 보았지만 동일한 출력이 발생합니다. 그러나 - 내가 $data['#'.$user_id]
을 할 때 작동하지만 이것은 나에게 맞는 해결책처럼 느껴지지 않습니다!
아무도 도와 줄 수 있습니까? 미리 감사드립니다!
사용자 ID별로 정렬하려고한다고 가정 할 때 '$ data'는 여기에서 다차원 적으로 보이지 않습니다. 왜'asort() '를 사용할 수 없습니까? http://www.php.net/manual/en/function.asort.ph –
아니, 값으로 정렬하려고합니다 ('number_format ([...]) 등). 그러나 나중에 사용자 ID를 Percentile 값과 연결할 수 있도록 사용자 ID를 키로 유지하려고합니다. – Jack
방금 말한대로 ...'asort()'는 트릭을 잘 수행 한 것 같습니다! – Jack