Search code examples
phpmysqlarraysprefixsanitization

Remove the non-numeric prefix from array elements before using array in a database query's IN() condition


I have following array result :

Array (
    [0] => company_1
    [1] => company_10
    [2] => company_15
) 

I want the result something like this as I can use in the mysql IN query clause:

$result = "1, 10, 15";

I use explode function but again it is returning both array values separately like this:

Array (
    [0] => Array (
        [0] => company
        [1] => 1
    )
    [1] => Array (
        [0] => company
        [1] => 10
    )
    [2] => Array (
        [0] => company
        [1] => 15
    )
)   

But wondering how can I only get numbers separately?


Solution

  • If your initial data is an array, just explode them again each them gather them inside then finally use implode. Example:

    $result = array('company_1', 'company_10', 'company_15');
    $result = array_map(function($piece){
        return explode('_', $piece)[1]; // note: for php 5.4 or greater
        // return str_replace('company_', '', $piece);
    }, $result);
    $result = implode(', ', $result);
    echo $result; // 1, 10, 15