在多维数组中更新或添加数据

时间:2018-03-17 12:11:53

标签: php arrays cookies multidimensional-array

您好我正在创建一个基于php cookies的最新产品视图。首先,每当用户查看某些数据时,我将cookie存储如下

//by Creating Manually array
$cookieArr = array("productid"=>$row_category[0],"views"=>1);
setcookie("myshopping", $cookieArr, time() + (8640000 * 30), "/");

以下输出

(
    [productid] => 27
    [views] => 1
)

现在当用户访问另一个页面作为示例35 number page时,输出应该像

(
    [productid] => 27,35
    [views] => 1,1
)

如何添加它不是问题。问题是如果用户再次访问同一页面,我必须提供观点。例如,如果用户再次访问27页,那么arrray应该喜欢。表示不添加数据只是更新视图。

(
    [productid] => 27,35
    [views] => 2,1
)

我试过

foreach ($cookieArr as $key => $value) {
  //Get all products
  $allProdcutid = $cookieArr["productid"];
}
//than checking
if(in_array($myproductid, $cookieArr['productid'])){
    echo "Avaibality";
}else{
    echo "exit";
}

这是为了演示。

3 个答案:

答案 0 :(得分:0)

看看多维数组... https://www.w3schools.com/php/php_arrays_multi.asp

您可以像下面那样构建您的cookie数组

(
    [products] => [13=>array("views"=>1),27=>array("Views"=>4)]              
)

然后您可以在products数组上使用array_key_exists来查找您的产品ID或添加它。

以下是php代码:

if(array_key_exists($myproductid,$cookie['products'])  
{
   $cookie['products'][$myproductid]['views']++;
}
else
{
   $cookie['products'][$myproductid]=array('views'=>1);
}

通过这种方式,您可以稍后将其他属性添加到产品数组中...

答案 1 :(得分:0)

1。 您可以创建如下数组: -

Array( 
  27=>1,
  35=>1
)

这将更容易处理。密钥是productid的,值是他们访问的时间。

2。 或修改您的代码,如下所示: -

<?php

$myproductid = 27;
$cookieArr= array(
    'productid' => '27,35',
    'views' => '1,1'
);

if(in_array($myproductid, explode(',',$cookieArr['productid']))){
    $searched_key = array_search($myproductid,explode(',',$cookieArr['productid']));
    $views_array = explode(',',$cookieArr['views']);
    $views_array[$searched_key] +=1;
    $cookieArr['views'] = implode(',',$views_array);
}else{
    echo "exit";
}

print_r($cookieArr);

输出: - https://eval.in/973605

答案 2 :(得分:-1)

您需要使用product_id作为键存储数组,并将视图存储为值。例如,

(
27 => 1,
37 => 2
)

通过这个你只需要检查数组的键并增加它的值。

例如,如果用户访问产品ID 27。