PHP新手一个,问一个数组查询的问题

我有一个数组

array = [{id:1,name:'张三1'},{id:2,name:'张三2'},{id:3,name:'张三3'},{id:4,name:'张三4'},{id:5,name:'张三5'},{id:6,name:'张三6'},{id:7,name:'张三7'}];

有没有方法可以直接查询到 id=3的元素内容,即返回{id:3,name:'张三3'},还是说只能foreach循环数组来查找

阅读 3.5k
6 个回答

第一种 php5.5或更高版本

$array       = json_decode('[{"id":1,"name":"张三1"},{"id":2,"name":"张三2"},{"id":3,"name":"张三3"},{"id":4,"name":"张三4"},{"id":5,"name":"张三5"},{"id":6,"name":"张三6"},{"id":7,"name":"张三7"}]');
$arrayWithId = array_column($array, null, 'id');
$result      = $arrayWithId[3];
print_r($result);

第二种

你这是json数组,如果是php需要使用json_decode() 转换为php数组,然后for循环

第三种

如是是js处理,3楼说的对

看标签是php问题, 看结构是js问题, php的话可以考虑array_column将id做为键处理数组再通过下标取值

你这应该是js语法吧,php没有这样的,js随便写,基本就是我这下面的栗子

Array.prototype.get = function (index) {
  for(var i = 0; i < this.length; i++) {
    if(this[i].id === index) {
      return this[i];
    }
  }

  return false;
}

array.get(3);
array_column($arr, null, 'id')[3]

只能foreach循环数组吧!

如果是json格式,直接先转换成数组的形式,然后利用array_column这个函数来解决就行!楼上已有回答!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进