[英]PHP get values from array by comma separated list
我正在嘗試使一小段代碼正常工作,但是我有點卡住了。
當人們提交表單時,它保存了一些關鍵字,但是以數字形式保存,以防止人們使用inspect元素更改輸入。 每個關鍵字都有自己的編號。
例如 :
1 = test
2 = test2
etc.
人們提交表單時,他們的輸入將保存在mysql數據庫中,如下所示:
1, 2
從現在開始,我想做的是我想顯示關鍵字而不是數字。 我已經為關鍵字創建了一個數組:
$array = array(1 => 'test1', 2 => 'test2', 3 => 'test3', 4 => 'test4');
有沒有辦法只顯示數組中與數據庫中的數字相同的值?
使用MySQL查詢輕松完成...示例:
select KeywordName from MyTable where KeywordId in (1, 2)
然后,您可以使用像PDO這樣的PHP預處理語句將數字傳遞給MySQL,然后將這些值取回數組中。
抱歉,我一開始誤解了您的問題,但是您可以使用以下方法:
$list = "1, 2";
$keyArray = explode(',', $list);
$newArray = array(); //this will be your new array containing all the right values
forEach($keyArray as $key){
$key = trim($key);
if(isset($array[$key]))
$newArray[$key] = $array[$key];
}
您可以執行以下操作
$fromDB = array(1,2);
$keyMap = array(1 => 'test1', 2 => 'test2', 3 => 'test3', 4 => 'test4');
$keywords = array();
foreach ($fromDB as $value)
{
$keywords[] = $keyMap[$value];
}
print_r($keywords);
我的意思是說我有一個用逗號分隔的列表,例如:1,2。 我也有一個數組,它位於我的問題中。 我想做的是我只想要數組中的值,這些值與逗號分隔列表中的值相同。 因此,如果我的列表包含數字1和2,則只需要數組中的值1和2。
假設我們有這個;
$s = 2; //2 was fetched from the database
$array = array(1 => 'test1', 2 => 'test2', 3 => 'test3', 4 => 'test4');
if( array_key_exists($s, $array) ) {
echo $array[$s];
}
您提到了一個逗號分隔的列表。
$csv = "2,1,4,500"; //Was fetched from the database
$array = array(1 => 'test1', 2 => 'test2', 3 => 'test3', 4 => 'test4');
foreach( explode(",", $csv) ) {
if( array_key_exists($s, $array) ) {
echo $array[$s] . PHP_EOL; //Final Output: test2 \r\n test1 \r\n test4
}
}
首先,您不應該在數據庫中存儲序列化數據。 而是適當地規范化您的數據。
說:
$fromDB = array_flip(array_map('trim',explode(',',"1, 2")));
$keyMap = array(1 => 'test1', 2 => 'test2', 3 => 'test3', 4 => 'test4');
$intersection= array_intersect_key($keyMap, $fromDB);
的$intersection
變量將保持容納只從那些值的數組$keyMap
陣列具有在相應的鍵$fromDB
之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.