Я звоню Ajax, чтобы отфильтровать значения из массива следующим образом:
<?php
$dataset = array_filter($_REQUEST['dataset'], function ($v){
return filterArray($_REQUEST['keyword'], $v);
});
function filterArray($needle,$haystack){
$needle = strtolower($needle);
foreach($haystack as $v){
if (stripos($v, $needle) !== false){
return true;
}
};
}
echo json_encode($dataset, JSON_UNESCAPED_UNICODE);
?>
Благодаря помощи окружающих, теперь это работает как шарм.
Однако мне нужно кое-что более сложное:
У меня есть два почти идентичных массива, импортированных в файл php через AJAX. Давайте назовем их «cleanDataset» и «rawDataset».
Они в основном клоны, но «rawDataset» является оригиналом, а «cleanDataset» является копией, свободной от тега html и нежелательных символов, которые я не использую. Я не хочу быть частью поиска. Различия невелики, но многочисленны и непредсказуемы.
Итак, я хотел бы выполнить поиск "cleanDataset" по выбранному ключевому слову, но я бы хотел, чтобы вместо этого "rawDataset" был отфильтрован и возвращен в javascript file.
К сожалению, в приведенном выше коде искомый массив также является фильтруемым.
Итак, в основном это то, что я пробовал, но это не так. работа:
<?php
$rawDataset = array_filter($_REQUEST['rawDataset'], function ($v){
return filterArray($_REQUEST['keyword'], $_REQUEST['cleanDataset']);
});
function filterArray($needle,$haystack){
$needle = strtolower($needle);
foreach($haystack as $v){
if (stripos($v, $needle) !== false){
return true;
}
};
}
echo json_encode($rawDataset, JSON_UNESCAPED_UNICODE);
?>
Я получаю сообщение "jSon Parse error: нераспознанный маркер" <"" при попытке отобразить выходной массив с console.log (). И кроме того, мне кажется, что я очень быстро исчерпал возможности, основанные на моих небольших знаниях. В скрипте нет другого места, где я мог бы перенаправить фильтрацию из cleaDataset в rawDataset. Я искал в Интернете похожий случай, но не смог найти. </p>
Любая помощь будет признательна. Спасибо.