$regex = '/'.implode('|', 10).'/i';
preg_match($regex, $ids)
找到的ID($ IDS)的列表中的號碼10。但是,如果ID列表如下:
$ids = array(10, 110, 1010);
難道帶回所有的人?我怎樣才能找到確切的數字我後,並不只是找到一個數字包含我以後的數字?
謝謝。
編輯:
我上面犯了一個錯誤。 ID列表實際上是一串以逗號分隔的值。例如:
$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++;
}
,我主要是通過具有一個ID列一個CSV生根(一些行在該列中具有多個ID,由逗號分隔)和sku列。更多信息here
所以我需要代碼來檢查特定ID的id字符串,例如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;
}
}
感謝您的幫助所有。
你爲什麼不使用in_array(「10」,陣列(..... ),是)? –
對不起,我已經意識到我的問題並沒有超出上下文的意義。你的答案可能會導致我找到解決方案。我將很快發佈一個響應 –
您可能需要考慮使用mysql或類似的數據庫。更快/更容易。 – dqhendricks