PHP 如何以最高的效率将二维数组转为一位数组

2014-05-25 01:08:12 +08:00
 jingwentian
如题:

https://gist.github.com/JingwenTian/4a6270aae3f1169b5002

---------------------------------------------
//一个很大的二维数组
$arr = array(
0 => array(
'id'=>11,
'name'=>'name1'
),
1 => array(
'id'=>22,
'name'=>'name2'
),
2 => array(
'id'=>33,
'name'=>'name3'
)

);

//如何以最高的效率实现将上面的二维数组转为一位数组
array(
0 => 11,
1 => 22,
2 => 33
)
---------------------------------------------

谢谢
6069 次点击
所在节点    PHP
10 条回复
ferock
2014-05-25 01:14:40 +08:00
首先,php 没有n维数组这个概念,显然你是从asp 或者vb 转来的。包括c# 都没有n 维数组的概念
其次,一次循环就可以解决你的问题

$array=array();
foreach($arr as $v){
$array[]=$v['id'];
}

print_r($array); # 你可以看看这是不是你要的。

另外,这个帖子里有人愿意回答一下v2ex 里怎么贴代码和使代码高亮么?
h2ero
2014-05-25 01:37:51 +08:00
Garwih
2014-05-25 01:49:46 +08:00
jingwentian
2014-05-25 08:38:55 +08:00
@ferock
记得以前直接可以贴gist地址就可以了,现在不好使了不晓得为什么
jingwentian
2014-05-25 09:17:19 +08:00
@ferock
@h2ero 已感谢。
我就是想不用foreach怎么能取出来的,@h2ero 的方法正是我想找的,php的原生函数都快忘干净了,惭愧
lizheming
2014-05-25 09:44:41 +08:00
@ferock 没有多纬数组的概念?那官方手册上的 multidimensional array 做何解释?
http://cn2.php.net/manual/en/language.types.array.php
ferock
2014-05-25 20:08:24 +08:00
@lizheming 你从这个角度来说也是对的,但就像第一句说的,本质就是一个k-v 对象。v 本身也可以是一个object,所以大家理解角度不一样
ferock
2014-05-25 20:11:02 +08:00
@h2ero
imn1
2014-05-26 12:51:06 +08:00
array_column 是新函数,不能说忘了,应该说新认识才对
我以前还专门写了个class对付矩阵数组的各种转换
nevernet
2014-07-02 09:30:29 +08:00
```
$array=array();
foreach($arr as $v){
$array[]=$v['id'];
}

print_r($array); # 你可以看看这是不是你要的。
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114121

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX