[ {
  "Id" : "t1sd",
  "Name" : "xiaoxiao",
  "Namea" : "测试样子",
  "nId" : "csd2"
}, {
  "Id" : "ae2",
  "Name" : "张三",
  "Namea" : "哈哈",
  "nId" : "20af"
}, {
  "Id" : "c3P",
  "Name" : "用户1",
  "Namea" : "dingding",
  "nId" : "4fc"
。。
} ]我有这样子的一组数据,并且不知道他的具体长度,所以,里面用我用了“”来省略。
如果我知道一个变量nId,如何去u偶的他的name的值。
比如,如果我找到一个nId等于4fc。如何通过代码获取到他的name是“用户1”;

解决方案 »

  1.   

    如果你只有这样一个数据,那你只能遍历了。
    foreach($arr as $data){
     if($data['nId']=='4fc'){
       echo $data['Name'];
       break;
     }
    }
    如果查找次数比较多,而且这个数据量很大,那建议先做一个索引。
    $nId_array = array();
    foreach($arr as $data){
      $nId_array [$data['nId']] = $data['Name'];
    }然后每次查询从这个 $nId_array 里找就可以了
      

  2.   

    $s =<<< TXT
    [ {
      "Id" : "t1sd",
      "Name" : "xiaoxiao",
      "Namea" : "测试样子",
      "nId" : "csd2"
    }, {
      "Id" : "ae2",
      "Name" : "张三",
      "Namea" : "哈哈",
      "nId" : "20af"
    }, {
      "Id" : "c3P",
      "Name" : "用户1",
      "Namea" : "dingding",
      "nId" : "4fc"
    } ]
    TXT;
    $nId = '4fc';
    $t = json_decode($s, true);
    $r = array_filter($t, function($a)use($nId) { return $a['nId'] == $nId; });
    echo current($r)['Name'];
    用户1