php還是比較常用的,於是我研程式設計客棧究了一下php二維陣列。在處理php陣列的時候,有一種需求特別的頻繁,如下二維陣列:
$arr = array(
1=>array(
'id' => 5,
'name' => '張三'
),2=>array(
'id' => 6,
'name' => '李四'
));目的就是要取到key為name的集合,得到這個結果:
$arr2 = array(
0=>'張三',
1=>'李四'
);這裡有幾種方法:
1:最簡單的,foreach遍歷陣列:
foreach ($arr as $key => $value)
2:**量稍微少一點的**,使用了 array_map 這個php方法:
$arr2 = array_map('array_shift',$arr);
意為把$arr陣列的每一項值的開頭的值移出,並返回被移出的每一項值中被移出的值,注意此時新陣列$arr2的鍵仍是原陣列$arr的鍵
2.1:在方法2的基礎上,可以稍微開一下腦洞,如果需要獲取的是二維陣列的每一項的開頭列或結尾列,也可以這樣做:
$arr2 = array_map('reset',$arr);
$arr2 = array_map('end',$arr);
哈哈,也是很方便的
3:還可以使用 array_reduc e方法,不過**略多,不過這個方法的想象空間(針對別的陣列取值操作)還是蠻大的:
$arr2 = array_reduce($arr, create_function('$result, $v', '$result程式設計客棧 = $v["name"];return $result;'));
array_reduce方法用**函式迭代地將對陣列的值進行操作,而crbayriswzeate_function用於乙個匿名方法做**用,這個匿名方法的引數$result為上一次迭代產生的值,$v是當前的值,內部實現既為獲取到陣列$arr每一項的」name」的值並push到新$result陣列;
4:最後這個終極方法實在是太爽了,乙個方法就搞定,而且非常靈活:
$arr2 = array_column($arr, 'name');
第二個引數為想要獲取的那一列的鍵名,是不是很方便呢,不過這個方法有個限制,就是php版本必須 >= 5.5.0,在陳舊專案中使用這個方法還是得斟酌一下哈
ps: php中遍歷二維陣列的幾種方式
<?php //使用for迴圈遍歷
$arr2=array(array("張三","20","男"),array("李四","25","男"),array("王五","19","女"),array("趙六","25","女"));
echo "姓名年齡性別";
for($i=0;$i<4;$i++)
echo "";
echo "";}
echo "";
?>
//使用foreach遍歷
<?php $arr = array('one'=>array('name'=>'張三','age'=>'23','***'=>'男'),
'two'=>array('name'=>'李四','age'=>'43','***'=&程式設計客棧gt;'女'),
'three'=>array('name'=>'王五','age'=>'32','***'=>'男'),
'four'=>array('name'=>'趙六','age'=>'12','***'=>'女'));
foreach($arr as $k=>$val)
echo "";
?>
<?php $arr = array('one'=>array('name'=>'張三','age'=>'23','***'=>'男'),
'two'=>array('name'=>'李四','age'=>'43','***'=>'女'),
'three'=>array('name'=>'王五','age'=>'32','***'=>'男'),
'four'=>array('name'=>'趙六','age'=>'12','***'=>'女'));
foreach($arr as $key=>$value)
echo "";}
?>
本文標題: php獲取二維陣列中某一列的值集合
本文位址:
合併多行的某一列值
合併多行的某一列值 stuff 刪除指定的字元,並在指定的起點處插入另一組字元。create table tb id int,col1 varchar 10 go insert tb select1,曾祥展 insert tb select1,學無止境 insert tb select1,ok in...
如何獲取二維陣列的列數
二維陣列的行數可以使用length屬性獲得,但由於c 中支援不規則陣列,因此二維陣列中每一行中的列數可能不會相同,如何獲取二維陣列中每一維的列數呢?答案還是length屬性,因為二維陣列的每一維都可以看做乙個一維陣列,而一維陣列的長度是可以使用length屬性獲得。例如,下面 定義乙個不規則二維陣列...
jquery更改Reaper某一列的值
一 實現效果 通過jquery實現點選repeater中的按鈕迴圈修改快遞專線的線路狀態 1 初始效果圖 2 點選關閉專線按鈕之後的效果圖 二 mvc模式實現上述效果 sqlserverdal層 region 修改快遞線路狀態 根據自動編號 快遞線路狀態修改快遞線路資訊 自動編號 是否專線 publ...