Lis*_*sa8 5 php arrays session
如何循环遍历会话数组并检查是否$_session['items'][1][p_alt-variation-1]存在等等?如果某个项目具有这些附加变体,则[p_alt-variation- {n}]元素是动态的,因此它可能多于1个
的print_r($ _会议[ '项目'])
Array
(
[0] => Array
(
[p_name] => Hovid PetSep
[p_code] => 336910
[p_coverImg] => 14-1460428610-ulNvG.jpg
[p_id] => 14
[p_price] => 24.50
[p_qty] => 2
)
[1] => Array
(
[p_name] => X-Dot Motorbike Helmet G88 + Bogo Visor (Tinted)
[p_code] => 2102649
[p_coverImg] => 12-1460446199-wI5qx.png
[p_id] => 12
[p_price] => 68.00
[p_alt-variation-1] => Red
[p_alt-variation-2] => L
[p_qty] => 1
)
)
Run Code Online (Sandbox Code Playgroud)
我想向用户展示如果某个项目的推车存在各种变化,如果包含像[p_alt-variation- {n}]这样的字符串,如何查找数组中的元素?
我foreach($_SESSION['items'] as $cart_item){ ... }用来循环所有购物车项目以显示商品的信息.
谢谢你的建议.
不是正则表达式专家,但您可以获取密钥并使用 进行检查preg_grep。如果该关键字有多个键,则只需计算结果即可。
想法是这样的:
foreach($_SESSION['items'] as $cart_item) { // loop the items
$keys = array_keys($cart_item); // get the keys of the current batch
// make the expression
$matches = preg_grep('~^p_alt\-variation\-\d+~i', $keys); // simply just checking the key name with has a number in the end, adjust to your liking
if(count($matches) > 1) { // if it has more than one, or just change this to how many do you want
echo 'has more than one variation';
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用其中一些键,只需使用在其中找到的结果即可$matches:
if(count($matches) > 1) {
foreach($matches as $matched_key) {
echo $cart_item[$matched_key];
}
}
Run Code Online (Sandbox Code Playgroud)