$arr = array(
       "r"=>"red",
       "b"=>"blue",
       "l"=>"lime"
);我现在要将  value=“blue”的key值替换为 “bl” 并且将对应的 "b"=>"blue" 删除  如何实现

解决方案 »

  1.   

    $arr['bl']="blue";
    unset($arr['b']);
      

  2.   


    我在用unset的时候提示   Cannot unset string offsets
      

  3.   

    for(var a in $arr)
    {
        if($arr[a]=="blue")
        {
             $arr["b1"]="blue";
             unset($arr[a]);  
        }
    }
      

  4.   


    我在用unset的时候提示   Cannot unset string offsets
      

  5.   

    function arr($arr , $valueHanlder = 'blue' ,$keyReplace = 'bl'){
    $matchValueArray = array($valueHanlder);

    # 获取搜索到结果的数据索引
    $getKey = array_flip(array_intersect($arr,$matchValueArray));
    if(!empty($getKey)){
    $key = $getKey[$valueHanlde];
    unset($arr[$key]);
    $arr[$keyReplace] = $valueHanlder;
    return $arr;
    }else{
    return false;
    }
    } $arr = array(
      "r"=>"red",
      "b"=>"blue",
      "l"=>"lime"
    ); $arr = arr($arr);
    print_r($arr);
      

  6.   


    我是测试过才给你贴出来的我测试的:
    输入数组是
    $arr = array(
      "r"=>"red",
      "b"=>"blue",
      "l"=>"lime"
    );函数arr(原数组,需替换单元的值,对应值的新键)默认情况是替换数组中有"blue"的键位为"bl"print_r(arr($arr));
    输出结果
    Array
    (
        [r] => red
        [l] => lime
        [bl] => blue
    )你是直接复制代码测试的吗?
      

  7.   


    $arr = array_flip($arr);
    $arr['blue'] = 'value';
    $arr = array_flip($arr);
      

  8.   

    <?php
    $arr = array(
      "r"=>"red",
      "b"=>"blue",
      "l"=>"lime"
    );
    $arr['bl']="blue";
    unset($arr['b']);
    var_dump($arr);
    ?>楼主出现“Cannot unset string offsets”大概是因为在unset之前$arr被设为字符了,如以下错误:
    <?php
    $arr = 'abc';
    $arr['bl']="blue";
    unset($arr['b']);
    var_dump($arr);
    ?>