2017-11-30 3 views
0

アイテムをグループで並べ替えて配列に別々に表示したい。文字列内のIDで配列されたアイテムを表示する

項目は、このような文字列に格納されています。

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

は、その後、私は、このようにそれらを表示する:私が欲しい

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

何:(foreachループの内側) 編集:簡単な解決策

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

ようにそれらを表示することができますか? –

+0

私はそれを表示したいだけです – JayPac

+2

最初のコードブロックから同じ 'echo'行を使用すると何が問題になりますか? – iainn

答えて

3

あなたの最初の配列をcol 、番号と値を区切るには、その後、キーとして番号を使用してアレイにそれらを養う例えば:$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()持つか)あなたのために事前にソートされます。

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

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

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

) 
1

あなたはあなたがグループidが「1」であるときに、データをどうするつもりどの操作説明することができます。この

$itemsArray = explode(", ", $itemsString); 
foreach($itemsArray as $item){ 
    if(strpos($item, "1:") || strpos($item, "1:") ===0){ 
    echo substr($item,2) 
    ;} 
} 
関連する問題