У меня труднее всего пытаться сделать что-то, что, по моему мнению, должно быть простым. Я читал много примеров, касающихся доступа к массивам PHP JSON, но я не могу найти подходящий для моего варианта использования (или я не понимаю, как эти штуки подходят).
Вот мой JSON в PHP (example_data.php):
<?php $contents = array( 1 => array( 'contentid' => '1', 'full' => 'Song Name by Artist Name (maininfo)', 'aname' => 'Artist Name', 'sname' => 'Song Name', 'main' => 'core content #1', 'maininfo' => 'url' ), 2 => array( 'contentid' => '2', 'full' => 'Song Name by Artist Name (maininfo)', 'aname' => 'Artist Name', 'sname' => 'Song Name', 'main' => 'core content #2', 'maininfo' => 'url') ); ?>
Приведенный ниже код вводит в качестве входной переменную поиска ( q
) и передает ее для поиска в JSON для частичных или полных совпадений.
<?php $q = $_GET['q']; include('example_data.php'); $results = array('contents' => array()); foreach ($contents as $name => $data) { if (stripos($name, $q) !== false) { $results['contents'][$name] = $data; } } $final_contents = array('header' => array(), 'data' => array()); $final_contents['header'] = array('title' => 'Music', 'num' => count($results['contents']), 'limit' => 6); foreach ($results['contents'] as $name => $data) { $final_contents['data'][] = array('primary' => $data['sname'], 'secondary' => $data['aname']); } /* Output JSON */ $final = array($final_contents); header('Content-type: application/json'); echo json_encode($final); die(); ?>
в<?php $q = $_GET['q']; include('example_data.php'); $results = array('contents' => array()); foreach ($contents as $name => $data) { if (stripos($name, $q) !== false) { $results['contents'][$name] = $data; } } $final_contents = array('header' => array(), 'data' => array()); $final_contents['header'] = array('title' => 'Music', 'num' => count($results['contents']), 'limit' => 6); foreach ($results['contents'] as $name => $data) { $final_contents['data'][] = array('primary' => $data['sname'], 'secondary' => $data['aname']); } /* Output JSON */ $final = array($final_contents); header('Content-type: application/json'); echo json_encode($final); die(); ?>
Он работает нормально, но он будет искать только имя массива ('1' или '2' в этом примере) для соответствия. Очевидно, пользователи не будут искать «1» – вместо этого они будут искать «Имя исполнителя» или «Название песни» или основной контент.
Кто-нибудь будет так добр, чтобы рассказать мне, как я могу изменить этот код, чтобы взять «q» и использовать его как поиск против «полного» ключа в частности – если есть частичное / полное совпадение в значении «полный», Я хочу вернуть его как JSON (включая aname, sname, main, maininfo и т. Д.). Ожидается множество результатов. JSON вернется сейчас, как ожидалось, но пользователь не будет искать «1», «2» и т. Д., Поэтому он не может использоваться.
Поистине ценим ваше время заранее!