PHP替换数组值

时间:2014-03-05 15:10:54

标签: php arrays

我创建了一系列产品,每个产品都带有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
                        )

                )

        )

)

因此它不断添加元素,而不是更新现有元素。

2 个答案:

答案 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;
}
}