I have this JSON code:
JavaScript
x
[
{"id":16385,"value":"2"},
{"id":4121,"value":"Spiderman"},
{"id":78036,"value":"Batman"},
{"id":8075,"value":["I accept the terms"]}
]
I am having this array
below out of using json_decode
:
JavaScript
Array (
[0] => stdClass Object ( [id] => 16385 [value] => 2 )
[1] => stdClass Object ( [id] => 4121 [value] => Spiderman )
[2] => stdClass Object ( [id] => 78036 [value] => Batman )
[3] => stdClass Object ( [id] => 8075 [value] => Array ( [0] => I accept the terms ) )
)
I want to use the array_search
https://www.php.net/manual/en/function.array-search.php
So I wrote this:
JavaScript
$key = array_search('4121', $array);
I expected $key
to be 1
but it is empty if I do echo $key;
Below my complete code:
JavaScript
function personen_tonen() {
ob_start();
global $wpdb;
//SQL query
$sql = "SELECT JSON_EXTRACT(custom_fields, '$') AS 'Test' FROM `wp_bookly_customer_appointments`";
$personen = $wpdb->get_results($sql);
foreach($personen as $persoon) {
$array = $persoon->Test;
$data = json_decode($array);
print_r($data);
$key = array_search('4121', $data);
echo $key;
}
return ob_get_clean();
}
add_shortcode('personen', 'personen_tonen');
Advertisement
Answer
If you … want to use the array_search()
function, you need to use json_decode()
with true
as second parameter to decode the JSON string and convert the JSON content into associative arrays:
JavaScript
<?php
$json = '[
{"id":16385,"value":"2"},
{"id":4121,"value":"Spiderman"},
{"id":78036,"value":"Batman"},
{"id":8075,"value":["I accept the terms"]}
]';
$array = json_decode($json, true);
$key = array_search('4121', array_column($array, 'id'));
$value = array_column($array, 'value');
var_dump($key);
var_dump(array_column($array, 'value')[$key]);
?>