wordpress settings API and option array structure

The Settings API generally expects data in the key => value form. I’m sure it is possible to save array data using the Settings API, but it somewhat circumvents the purpose of the API.

If I’m understanding your question correctly, you’re trying to take a Plugin Option, and use the value of that option to update the wp_list_table class. The most straightforward approach might be to save some unique key as the Plugin option, and then cross-reference that unique key against a separate array-of-arrays to use to extend wp_list_table.

In other words, build your wp_list_table values array, perhaps like so:

<?php
function plugin_slug_get_wp_list_table_data() {
    $data = array(
        'a' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
        'b' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
        'c' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
        'd' = array(
            'id'=> '1',
            'name'=> 'tom',
            'pageurl'=> 'someurl',
            'notes'=> 'someNotes'
        ),
    );
    return $data;
}
?>

Then, save your Plugin option as 'a', 'b', 'c', or 'd'.

Then, get your option:

<?php
$plugin_slug_options = get_option( 'plugin_slug_options' );
$plugin_slug_wp_list_table_setting = $plugin_slug_options['wp_list_table_setting'];
?>

Then, use the option setting to get the data with which to update wp_list_table:

<?php
$plugin_slug_wp_list_table_array = plugin_slug_get_wp_list_table_data();
$plugin_slug_wp_list_table_data = $plugin_slug_wp_list_table_array[$plugin_slug_wp_list_table_setting];
?>

(How you actually perform the wp_list_table update is up to you…)