【问题标题】:Update Or Add Data in Multidimensional Array更新或添加多维数组中的数据
【发布时间】:2018-03-17 20:42:40
【问题描述】:

您好,我正在创建一个基于 php cookie 的最近最佳产品视图。首先,每当用户查看一些数据时,我都会按如下方式存储 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 页,那么数组应该喜欢。表示不添加数据只是更新视图。

(
    [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";
}

这是为了演示。

【问题讨论】:

  • 为什么要用逗号分隔值?为什么不创建一个像 :-( [productid] => array(27,35), [views] => array(27=>2,35=>1) ) 这样的数组。每次都易于更新或添加

标签: php arrays cookies multidimensional-array


【解决方案1】:

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】:

看看多维数组...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);
}

这样您以后可以向产品数组中添加视图以外的其他属性...

【讨论】:

  • 这是我的问题!
【解决方案3】:

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

(
27 => 1,
37 => 2
)

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

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

【讨论】:

  • 这应该是评论
猜你喜欢
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多