【问题标题】:Cakephp: Update an Array object with equivalent column value in a tableCakephp:使用表中的等效列值更新 Array 对象
【发布时间】:2019-05-19 10:55:41
【问题描述】:

我已将以下内容存储在设置表中:

Array(
    A => 2, B => 2, C => 0, D => 2,
    E => 2, F => 0, G => 2, H => 0,
    I => 2, J => 0, K => 0, L => 0,
    M => 0, N => 0, O => 0, P => 0,
    Q => 0
)

并想在代码中使用时将别名列值替换为id列值,以便我得到:

Array(
    35 => 2, 24 => 2, 14 => 0, 12 => 2,
    22 => 2, 8 => 0, 21 => 2, 17 => 0,
    7 => 2, 10 => 0, 9 => 0, 13 => 0,
    18 => 0, 15 => 0, 16 => 0, 6 => 0, 11 => 0
)

表格数据:

在 Cakephp 中寻找更简单的方法来实现这一点。谢谢你。

【问题讨论】:

    标签: php mysql arrays cakephp-1.3


    【解决方案1】:

    因此,如果您将从数据库中检索到的数据存储在这样的数组中:

    $arr1 = Array( 35 => 'A', 24 => 'B', 14 => 'C', 12 => 'D', 22 => 'E', 8 => 'F')
    $arr2 = Array( 'A' => 2, 'B' => 2, 'C' => 0, 'D' => '2', 'E' => 2, 'F' => 0)
    

    现在,我们可以像这样比较数组并进行替换:

    foreach($arr1 as $key=>&$value){
        if(array_key_exists($value, $arr2)){
            $value = $arr2[$value];
        }
    
    }
    print_r($arr1);
    

    看到它在行动here

    【讨论】:

    • 谢谢@rs007。我只是将第二个数组($arr2)存储在设置表中,并希望从显示的表中获取 id。
    • 好的,既然你说你需要在代码中使用修改后的数组,你需要从设置表($arr2)和给定的表($arr1)中获取数据正确。一旦你在内存中有这两个数组,只要你得到所需的数组作为输出,你选择如何操作就没有什么区别了。
    • 谢谢。如果 $arr1 = Array( 35 => 'A', 24 => 'B', 14 => 'C', 12 => 'D', 22 => 'E', 8 => 'F', 52 => 'T', 56 => 'X') 。它不应该显示额外的记录。
    • 好的,所以你的意思是如果 $arr1 的值在 $arr2 中没有对应的键,那么在这种情况下,一个选项是你可以取消设置数组中的那个元素:所以你在上面的代码你可以添加一个 else 块和:unset($key),如果你想重新索引这个数组,那么你可以做 $arr3 = array_values($arr1)
    • 更正上面的评论,它是 unset($arr1[$key]) 而不仅仅是 $key
    猜你喜欢
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2019-01-11
    相关资源
    最近更新 更多