我创建了一系列产品,每个产品都带有ID和分数:
$savedProducts = array( 'product' => array("product_id" => $product_id,"product_score" => $score));
我希望能够使用product_id作为标识符来更新分数。
我试过了:
foreach($savedProducts as $key => $val)
{
if ($val == $property_id )
{
$savedProducts[$key] = $score;
break;
}
}
继续添加新数组项,而不是更新原始数组。
我认为问题是我的初始阵列设置与编辑后的阵列设置不匹配。
初始数组:
Array
(
[product] => Array
(
[product_id] => 125026
[product_score] => 5
)
)
尝试更新分数后:
Array
(
[0] => Array
(
[product] => Array
(
[product_id] => 125026
[product_score] => 4
)
)
[1] => Array
(
[0] => Array
(
[product] => Array
(
[product_id] => 125026
[product_score] => 4
)
)
)
)
因此它不断添加元素,而不是更新现有元素。
答案 0 :(得分:1)
使用PHP 5.5:
$savedProducts = array_column($savedProducts, NULL, 'product_id');
然后您可以通过以下方式访问您的产品:
$savedProducts[$product_id]
答案 1 :(得分:0)
请试试这个
foreach($savedProducts as $key => $val)
{
if($val['product_id'] == $property_id)
{
$savedProperties[$key]['product_score'] = $score;
break;
}
}