2012-03-27 3 views
1

을 heres 내가 필드 값에 대해서 설명 등을들 수있다 내 데이터베이스에 엔트리를 가지고있는 상황일치 이종 문자열

  • 64 | 65 | 0 | 0 | 72 | 0 | 0 |
  • 61 | 65 | 0 | 0 | 72 | 0 | 0 |

프론트 엔드에 다음과 같은 문자열이 표시됩니다. 64 | 65 | 72 | 0 | 0 | 0 | 0 | (항목이 1 필드와 유사하지만 재 배열 된 것을보십시오). 사용자가 입력 한 옵션을 기반으로합니다 (문자열 길이는 동일하게 유지됩니다).

당신이 당신이 정렬 할 수 있습니다 배열을해야합니다 문자열을 폭발하는 경우 일치하는 필드의 데이터베이스에서

+0

문자열을 분할하고 가능한 모든 조합을 검색 - 당신이 지금까지 시도했다 우리를보기 – ManseUK

+0

단일 데이터베이스 필드에 여러 값을 결합하는 당신의 고통을 먹으 렴 ... –

답변

2

을 데이터를 얻을 수 있도록이 가능 데이터베이스 필드와 사용자 필드를 동일시하는 것입니다.

그러나 데이터베이스의 데이터도 정렬되지 않으면 아무 소용이 없습니다.

$my_array = explode("|", trim($str, "|"));

+0

데이터베이스를 정렬 때문에 다른 방법이 없습니다 필드는 나를위한 옵션이 아닙니다 –

+0

고마워요 조쉬. @OP - 몇 개의 레코드가 있습니까? 아마도 그 필드를 다시 입력하기위한 간단한 스크립트를 작성할 수 있습니까? – Pete

+0

잘 거기에 5000 + 레코드 –

0
function rearrange($string) 
{ 
    $temp = explode("|", $string); 
    // $temp is now an array. sort it however you want and store it back in $temp 
    return implode("|", $temp); 
} 
0

나는 재정렬 규칙이 무엇인지 정확히 모르겠지만, 이제 폼 ABCDEFG와 솔루션을 설명하자 -> ABDECFG합니다.

데이터를 자바 스크립트로 다시 보내기 전에 서버로 다시 보내거나 서버에서 다시 주문하여 데이터를 MySQL로 보낼 수 있습니다. 귀하의 질문은 PHP/MySQL에서 제출 한 이후, 나는 당신이 후자를 수행하려는 가정합니다.

이 방법이 가장 훌륭한 해결책은 아니지만 명확한 방법을 보여줍니다.

// Assume $Unsorted = '64|65|0|0|72|0|0|' 
$Segments = explode('|', $Unsorted); 
if (count($Segments) != 7) 
{ 
    // Handle the error case 
} 

$Sorted = sprintf 
(
    '%u|%u|%u|%u|%u|%u|%u|', 
    $Unsorted[0], 
    $Unsorted[1], 
    $Unsorted[3], 
    $Unsorted[4], 
    $Unsorted[2], 
    $Unsorted[5], 
    $Unsorted[6] 
); 

// Now, $Sorted = '64|65|0|0|72|0|0|' 
+0

잘 입력 내 사용자 입력의 조합이며 어떻게 당신의 솔루션을 구현할 수 있지만 시도하고 다시 얻을 것이다 변경할 수 있습니다 –

0

내가 다른 사람처럼 말할 것이다 : 당신이 기본 개념을 이해하면 당신은 그것을 연마 할 수 가 배열에 당신의 문자열을 분할, 다음은

$myInput = explode('|', $strInput); 
$similar = (true === empty(array_diff($myInput, $data)) 
     && true === empty(array_diff($data, $myInput))); 

보정 (빈은 변수 만 허용) 비교

$myInput = explode('|', $strInput); 
$diff1 = array_diff($myInput, $data); 
$diff2 = array_diff($data, $myInput); 
$similar = (true === empty($diff1) 
     && true === empty($diff2)); 
+0

글쎄,이 일을 시도했지만 치명적입니다 오류 –

+0

오, 그래, 물론! 내 실수! 비어있는 변수 만 허용! (나는 그것을 테스트하지 않고 그것을 썼다). 나는 내 게시물을 편집 – Guile

0

파이프로 입력 및 데이터베이스 문자열을 분할하고 다음과 같은 결과 배열을 비교하기 전에이를 정렬하십시오.

$arr1 = explode('|', '64|65|0|0|72|0|0|'); 
$arr2 = explode('|', '64|65|72|0|0|0|0|'); 
sort($arr1); 
sort($arr2); 
if ($arr1 === $arr2) 
    echo "Matched\n"; 
else 
    echo "Not Matched\n"; 
+0

감사합니다 anubhava 그것을 시도하고 다시 당신에게 돌아갈 것입니다 –