update_post_meta on multi-dimensional array options

You can’t, get_post_meta and its associated APIs all work on key/value pairs, you can update the value, but you can’t update a sub-section of it. You have to retrieve the entire value, modify it, then put it back as a whole.

Additionally, values are always strings, so to make this work WordPress will PHP serialize your data, introducing a raft of security attack vectors ( object deserialisation attacks for example ). Your post meta value is also very difficult to search for.

Instead, avoid this and all the problems associated by using multiple key/value pairs instead of serialising data into a single key/value pair. Remember, you can have several post meta key/values with the same key, keys aren’t unique!

And if you must store multidimensional data in a serialised format, use JSON instead. Don’t rely on WP to flatten out your objects and arrays into strings