Я использую
$regex = '/'.implode('|', 10).'/i';
preg_match($regex, $ids)
, чтобы найти число 10 в списке идентификаторов ($ ids). Однако, если список идентификаторов выглядит так:
$ids = array(10, 110, 1010);
Вернет ли это их всех? Как я могу найти точное число, за которым я иду, а не просто найти число, которое содержит число, за которым я иду?
Спасибо.
Edit:
Я ошибся выше. Список идентификаторов на самом деле представляет собой строку значений, разделенных запятыми. Например:
$ids = "10,1010,101";
Трудно объяснить весь процесс идеи, стоящий за этим, но это мой полный код:
<?php
$file = fopen('allprods.csv', 'r');
$id = array($_GET['id']);
$id = array_map('preg_quote', $id);
$regex = '/'.implode('|', $id).'/i';
$skus = array();
while (($line = fgetcsv($file)) !== FALSE) {
list($ids, $sku) = $line;
if(preg_match($regex, $ids)) {
$skus[] = $sku;
}
}
$count = count($skus);
$i = 1;
echo $category_id;
foreach ($skus as $sku){
echo $sku;
if($i != $count) { echo "`"; }
$i++;
}
По сути, я рутирую через CSV, в котором есть столбец идентификаторов (в некоторых строках есть несколько идентификаторов в этом столбце, разделенных запятыми) и столбец sku. Подробнее здесь
Поэтому мне нужен код, чтобы проверить строку идентификаторов для определенного идентификатора, например, 10, а затем добавить соответствующий SKU в массив sku.
Я уверен, что этот код беспорядок, так что терпите меня, пока я взламываю PHP на куски!
Редактировать: Теперь это решено! Вместо этого я использовал in_array, как указано в ответах. Прежде всего я взорвал запятую отдельной строкой. Код можно увидеть ниже:
$skus = array();
while (($line = fgetcsv($file)) !== FALSE) {
list($ids, $sku) = $line;
$cats = explode(',',$ids);
if (in_array($_GET['id'], $cats)) {
$skus[] = $sku;
}
}
Спасибо за помощь всем.