PHP基于2分隔符单独编号

PHP seperate number using based on 2 delimiter

I have this variable $sid

$sid        =   isset($_POST['sid']) ? $_POST['sid'] : '';

and it's output is:

Array
(
    [0] => 4|1
    [1] => 5|2,3
)

Now I want to get the 1, 2, 3 as value so that I can run a query based on this number as ID.

How can I do this?

Use explode()

$arr = array(
0 => "4|1",
    1=> "5|2,3"
);

$output = array();
foreach($arr as $a){
    $right = explode("|",$a);
    $rightPart = explode(",",$right[1]);
    foreach($rightPart as $rp){
      array_push($output,$rp);
    }
}

var_dump($output);

Use foreach to loop thru your array. You can explode each string to convert it to an array. Use only the 2nd element of the array to merge

$sid = array('4|1','5|2,3');

$result = array();
foreach( $sid as $val ) {
    $val = explode('|', $val, 2);
    $result = array_merge( $result, explode(',', $val[1]) );
}

echo "<pre>";
print_r( $result );
echo "</pre>";

You can also use array_reduce

$sid = array('4|1','5|2,3');

$result = array_reduce($sid, function($c, $v){
    $v = explode('|', $v, 2);
    return array_merge($c, explode(',', $v[1]));
}, array());

These will result to:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

You can do 2 explode with loop to accomplish it.

foreach($sid as $a){
    $data = explode("|", $a)[1];

    foreach(explode(",", $data) as $your_id){
        //do you stuff with your id, for example
        echo $your_id . '<br/>';

    }
}