是否有更好的方法来搜索特定字符串的$ _SESSION变量(或任何数组),而不是:
foreach($_SESSION as $k => $v){
if(strstr($k, 'p_')){
感谢。
编辑:我的键看起来类似于:
p_123 p_456 i_123 ...
答案 0 :(得分:3)
如果您的$_SESSION
结构必须保持“原样”,IMO就可以了。
但是,如果所有'p_'元素都可以在$_SESSION['p'] = array('key1' => 'val1', ...)
之类的数组索引下,则可以一次检索所有'p'元素。
顺便说一句,这只是微观优化,请选择你喜欢的结构。
编辑:请注意strstr()
:如果有一天您必须将 i_123_p_456 等密钥存储到$_SESSION
数组中,则应切换到if (strpos($k, 'p_') === 0)
。
答案 1 :(得分:1)
我正在添加另一个答案,因为我采取了完全不同的方法。
如果您打算这么做,可以考虑使用过滤器。
function pprefix($var) {
return(strstr($var, 'p_'));
}
$filtered = array_filter(array_keys($_SESSION), "pprefix");
foreach($fildered as $k) {
echo("$k => " . $_SESSION[$k]);
}
答案 2 :(得分:-1)
试试这个:
if (array_key_exists('p_', $_SESSION)) {
echo($_SESSION['p_']);
}
或者,如果你只知道密钥名称的一部分(比如beggining),我会使用array_keys()而不是$ k => $ v,像这样:
foreach(array_keys($_SESSION) as $k) {
if(strstr($k, 'p_')){
// do something.
}
}