У меня есть файл CSV, который я преобразовал в массив с помощью PHP, который выглядит примерно так, но с гораздо большим количеством записей:
Array(
[0] = > Array
{
[firstName] = > John
[surname] = > Smith
}
[1] => Array
{
[firstName] = > David
[surname] = > Jones
}
)
Я хочу взять этот массив данных и, возможно, пропустить его, чтобы найти записи в моей базе данных, которые соответствуют данным в массиве. Я новичок в PHP и использую эти данные для запроса базы данных. Любое руководство будет оценено!
Если вам нужен код, который я использовал для преобразования CSV в массив, дайте мне знать, и я отредактирую вопрос.
Заранее спасибо!
если вы хотите найти значение в массиве, вы можете использовать функцию in_array
если у вас есть 2d-массив и хотите, чтобы поиск значения использовал foreach
loop и in_array
foreach($mother_arr as $child_arr){
if(in_array($value,$child_arr)){
echo "match"
break;
}
}
если вы хотите, чтобы массив поиска в массиве мог использовать эту функцию (отсюда)
function searchMyCoolArray($arrays, $key, $search) {
foreach($arrays as $object) {
if(is_object($object)) {
$object = get_object_vars($object);
}
if(array_key_exists($key, $object) && $object[$key] == $search){
echo "match";
break;
}
}
}
Поскольку я не знаю, как вы подключаетесь к БД, вот пример PDO:
$stmt = $pdo->prepare('
select 1
from users
where firstname = :firstName
and surname = :surname
limit 1
');
foreach ($csvData as $key => $row) {
$stmt->execute($row);
$csvData[$key]['exists'] = ($stmt->fetchColumn() == 1);
}
Это добавит к каждому элементу вашего массива новое логическое поле exists
, что будет true
, если строка уже существует в users
таблице.