당신이 수정해야 할 일회성 문제이며 앞으로 나아갈 생각이 없다고 가정하면 sort
을 사용하여 문제를 해결하십시오. 다음과 같이 배열에 모든 영숫자 주문 입력란이 있다고 가정 해 보겠습니다.
$vals = array (
'12342313A',
'12342313D',
'12342313E',
'12342313B',
'12342313C'
);
이러한 것들은 모두 순서가 뒤섞여 있지 않습니다. 그러나, 당신은 배열의 기능 sort
(docs)를 호출 할 수 있습니다 및 PHP는 그것의 감각을 만드는 좋은 직업을 수행
print '<pre>Unsorted: ';
print_r($vals);
print '</pre>';
sort($vals);
print '<pre>Sorted: ';
print_r($vals);
print '</pre>';
/*
Unsorted: Array
(
[0] => 12342313A
[1] => 12342313D
[2] => 12342313E
[3] => 12342313B
[4] => 12342313C
)
Sorted: Array
(
[0] => 12342313A
[1] => 12342313B
[2] => 12342313C
[3] => 12342313D
[4] => 12342313E
)
*/
지금까지 너무 좋아. 이제 주문을 받았고 보너스로 데이터베이스의 새 필드로 배열 색인을 사용할 수 있습니다. 테이블을 변경하고 새 값을 보유 할 필드를 추가하십시오. 우리는이 필드를 numeric_order
이라고 부를 것이고, 내 샘플에서는 현재 영숫자 정렬 데이터가 들어있는 필드를 호출했습니다 string_order
.루프 당신의 정렬 된 배열하고 (예를 들어) 데이터베이스를 업데이트 : 나는 당신이 무엇이든은 주문 0
를 갖고 싶어하지 않는 가정에 기초 루프에 x
에 1을 추가
foreach ($vals as $x=>$v) {
$sql = 'UPDATE myTable SET numeric_order = '.($x+1).' WHERE string_order = "'.$v.'"';
}
- 그 ISN 경우 ' 걱정할 필요가 없다면 x
을 사용해도됩니다. 이것은 또한 두 행에 동일한 영숫자 정렬 값이 없다는 가정에 근거합니다.
만약 그렇다면 모두 손실되지 않습니다! 배열은 다음과 같습니다.
$vals = array (
3=>'12342313A',
15=>'12342313D',
66=>'12342313E',
101=>'12342313B',
200=>'12342313C'
);
... 숫자 키는 해당 행의 고유/기본 키를 나타냅니다. 내 기본 가정이 잘못하고있는 경우
이
$ord = 1
foreach ($vals as $x=>$v) {
$sql = 'UPDATE myTable SET numeric_order = '.$ord.' WHERE id = "'.$x.'"';
$ord++;
}
계속 것 : 다음 루프는 다음과 같습니다 - 대신 (docs을 키를 보존 않는 ) asort
를 사용하여 키를 보존하지 않습니다 sort
의 행을 정렬하는이 방법을 처리하기 위해 내 겸손한 견해에서 데이터 디자인을 다시 고려해야합니다.
메모 : 문자의 숫자 값 (ASCII 표현 등)을 찾는 것이 아니라 오히려 ** 서수 ** 값을 찾고있는 것처럼 보입니다. 편지. 아주 뚜렷하게 다른 점은 - 글을 쓰면 질문의 제목을 다시 지정하는 것이 좋습니다. –
@ Chris-- 네, 맞습니다. 팁 주셔서 감사합니다 – julio
글자는 얼마나 큽니까? 'F'? 'Z'? 그들은'1' 또는'A'로 돌아 다니는가? – webbiedave