나는 개체의 배열을 가지고, 각 개체의 색인 : 개체 - 인덱스, 양의 정수입니다.각 개체 내부의 인덱스별로 개체 배열을 정렬하는 방법은 무엇입니까?
두 번째 배열이 있습니다. 각 항목은 인덱스이며, object-> index 중 하나와 고유하게 일치합니다. 개체의 첫 번째 배열을 정렬하여 두 번째 배열 인덱스의 순서와 같은 순서로 정렬하려고합니다.
의미가 있습니까?
감사합니다.
나는 개체의 배열을 가지고, 각 개체의 색인 : 개체 - 인덱스, 양의 정수입니다.각 개체 내부의 인덱스별로 개체 배열을 정렬하는 방법은 무엇입니까?
두 번째 배열이 있습니다. 각 항목은 인덱스이며, object-> index 중 하나와 고유하게 일치합니다. 개체의 첫 번째 배열을 정렬하여 두 번째 배열 인덱스의 순서와 같은 순서로 정렬하려고합니다.
의미가 있습니까?
감사합니다.
나는 두 번째 배열 (array_flip
)를 플립 것입니다. 그럼 당신은 너무처럼 객체를 반복 할 수 있습니다
$indices = array_flip($second_array);
$sorted_objects = array();
foreach ($objects as $object) {
$sorted_objects[$indices[$object->index]] = $object;
}
+1 그 중 하나 또는'array_search()'를 사용하십시오. 나중에'ksort ($ sorted_objects);를 써서 원하는 순서로 반복 할 수도 있습니다. – Wiseguy
감사! 이것은 효과가 있었다. Wiseguy도 정확했고 나중에 ksort가 필요했습니다. –
@Hardworker, 또는 $ sorted_objects = array_fill (0, count ($ objects), NULL);을 사용하여 객체가 추가되지 않고 적절한 위치에 삽입되도록 할 수 있습니다 (PHP가 올바른 키가 숫자 인 경우에는 순서를 지정하지만 분명히 그렇지 않은 경우). – Brian
$objArray = ...;
$sortArray = ...;
$newArray = array(); // the sorted array
foreach($sortArray as $index)
{
foreach($objArray as $obj)
{
if($obj->index === $index)
{
$newArray[] = $obj;
break;
}
}
}
?
체크 아웃 usort (http://au.php.net/manual/en/function.usort.php) :이 기능을 지정하여 배열을 정렬 할 수 있습니다. 이 함수는 객체의 인덱스를 얻는 것입니다. 더 쉽게 개체의 원하는 위치를 검색 할 수 있도록
function cmp($obj1, $obj2) {
if ($obj1->index == $obj2->index) {
return 0;
}
return ($obj1->index < $obj2->index) ? -1 : 1;
}
usort($aObjects, "cmp");
쇼 코드 –
의 일부는 그래서 당신은 배열 ('1'=> 개체 -> 인덱스가 {= 1}, '2'=> 객체 - > index (= 2)), 내부 {}은 색인 값입니다. 그리고 같은 구조를 가진 두 번째 배열을 가지며 한 배열을 다른 배열과 같은 순서로 정렬하고 싶습니까? – Churk