2017-11-30 1 views
0

그룹별로 정렬 된 항목을 개별적으로 배열에 표시하려고합니다. 배열의 항목을 문자열 내부의 ID로 정렬 된 순서로 표시합니다.

항목

은 다음과 같이 문자열에 저장됩니다

$itemsArray = explode(", ", $itemsString); 
foreach($itemsArray as $item){ 
echo substr($item,2); //substr to get rid of the group id 
} 

내가 원하는 무엇 : (foreach는 루프 내부) 편집 :

$itemsString = "1:asd, 1:wer, 2:dfg, 3:gfg, 3:sdfss"; //and so forth 

그런 다음 나는이처럼 표시 간단한 솔루션을

if(strpos($item, "1:")!==false){ 
echo substr($item,2); 
} 
+0

처럼 그들을 표시 할 수 있습니까? –

+0

그냥 표시하고 싶습니다. – JayPac

+2

첫 번째 코드 블록에서 같은 'echo' 행을 사용하는 것이 잘못된 이유는 무엇입니까? – iainn

답변

3

다른 폭발을 수행 할 수 있습니다. , 수와 값을 분리해서에, 다음 키로 수를 사용하여 배열에 먹이 예 : $sorted_array을 의미

$itemsString = "1:asd, 1:wer, 2:dfg, 3:gfg, 3:sdfss"; //and so forth 

$sorted_array = []; 
$itemsArray = explode(", ", $itemsString); 
foreach($itemsArray as $item) { 
    $subItemsArray = explode(":", $item); 
    $sorted_array[$subItemsArray[0]][] = $subItemsArray[1]; 
} 

print_r($sorted_array); 

은 (쉽게 정렬 ksort() 또는) 당신을 위해 사전 정렬 할 것입니다 : '1 :'

Array 
(
    [1] => Array 
     (
      [0] => asd 
      [1] => wer 
     ) 

    [2] => Array 
     (
      [0] => dfg 
     ) 

    [3] => Array 
     (
      [0] => gfg 
      [1] => sdfss 
     ) 

) 
1

당신은 그룹 ID가 때 데이터와 함께 할 의도하는 동작을 설명 할 수이

$itemsArray = explode(", ", $itemsString); 
foreach($itemsArray as $item){ 
    if(strpos($item, "1:") || strpos($item, "1:") ===0){ 
    echo substr($item,2) 
    ;} 
} 
관련 문제