显示由字符串内的id排序的数组中的项目

时间:2017-11-30 15:09:31

标签: php arrays sorting foreach

我希望单独按组排序显示数组中的项目。

这些项目存储在这样的字符串中:

$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
}

编辑:解决方案

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

2 个答案:

答案 0 :(得分:2)

您可以对冒号上的初始数组执行另一次爆炸,分隔数字和值,然后使用数字作为键将它们输入数组,例如:

$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);

这意味着$sorted_array将为您预先排序(或使用ksort()轻松排序):

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

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

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

)

答案 1 :(得分:0)

你可以像这样显示它们

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