Looking for an element in an array in PHP

Luca Ridolfo :

I don't know if I'm managing this array in the best way.

The array I have is this:

$bass = $_POST['bass'];
$selected_scale = $_POST['scale'];
$major_scales = array 
    (
    array("C","D","E","F","G","A","B","C","D","E","F","G","A","B",),
    array("C#","D#","E#","F#","G#","A#","B#","C#","D#","E#","F#","G#","A#","B#",),
    array("Db","Eb","F","Gb","Ab","Bb","C","Db","Eb","F","Gb","Ab","Bb","C",),
    array("D","E","F#","G","A","B","C#","D","E","F#","G","A","B","C#"),
    array("D#","E#","F##","G#","A#","B#","C##","D#","E#","F##","G#","A#","B#","C##"),
    array("Eb","F","G","Ab","Bb","C","D","Eb","F","G","Ab","Bb","C","D"),
    array("E","F#","G#","A","B","C#","D#","E","F#","G#","A","B","C#","D#"),
    array("E#","F##","G##","A#","B#","C##","D##","E#","F##","G##","A#","B#","C##","D##"),
    array("Fb","Gb","Ab","Bbb","Cb","Db","Eb","Fb","Gb","Ab","Bbb","Cb","Db","Eb"),
    array("F","G","A","Bb","C","D","E","F","G","A","Bb","C","D","E"),
    array("F#","G#","A#","B","C#","D#","E#","F#","G#","A#","B","C#","D#","E#"),
    array("Gb","Ab","Bb","Cb","Db","Eb","F","Gb","Ab","Bb","Cb","Db","Eb","F"),
    array("G","A","B","C","D","E","F#","G","A","B","C","D","E","F#"),
    array("G#","A#","B#","C#","D#","E#","F##","G#","A#","B#","C#","D#","E#","F##"),
    array("Ab","Bb","C","Db","Eb","F","G","Ab","Bb","C","Db","Eb","F","G"),
    array("A","B","C#","D","E","F#","G#","A","B","C#","D","E","F#","G#"),
    array("A#","B#","C##","D#","E#","F##","G##","A#","B#","C##","D#","E#","F##","G##"),
    array("Bb","C","D","Eb","F","G","A","Bb","C","D","Eb","F","G","A"),
    array("B","C#","D#","E","F#","G#","A#","B","C#","D#","E","F#","G#","A#"),
    array("B#","C##","D##","E#","F##","G##","A##","B#","C##","D##","E#","F##","G##","A##"),
    array("Cb","Db","Eb","Fb","Gb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Ab","Bb")
    );

$bass is a string, like the one inside the arrays. The $selected_scale is just a number.

What I'm trying to do is to find the $bass in one of those array in the position of $selected_scale. Basically, $bass = $major_scales[$selected_scale]. Therefore I want to create a loop in order to get the elements after that.

But I don't know how to manage in this case the situation. I've looked everything in internet and try various solutions without success. I'd like to know how can I do it. Thanks

Aksen P :

Try to use next loop:

// if value exists in mentioned index
if (in_array($bass,$major_scales[$selected_scale])){
    // index of that value in that array
    $tmp_ind = array_search($bass,$major_scales[$selected_scale]);

    // length of the array
    $len = count($major_scales[$selected_scale]);

    // store values after this value
    $res = [];
    for ($i=$tmp_ind;$i<$len;$i++){
        $res[$i] = $major_scales[$selected_scale][$i];
    }
}
print_r($res);

Demo1

If you need to find value by index $selected_scale in one of these arrays and also store values after this position:

foreach($major_scales as $ar){
    if ($ar[$selected_scale] == $bass){ 

        // length of the array
        $len = count($ar);

        // store values after this value
        $res = [];
        for ($i=$selected_scale;$i<$len;$i++){
            $res[$i] = $ar[$i];
        }
    }
} 
print_r($res);

Demo2

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=198341&siteId=1